+struct erb_key {
+ long tm;
+ float val;
+};
+
+enum {
+ ERB_TRK_X, ERB_TRK_Y, ERB_TRK_Z, /* position (x,y,z) */
+ ERB_TRK_QX, ERB_TRK_QY, ERB_TRK_QZ, ERB_TRK_QW, /* rotation quat (xi+yj+zk+w) */
+ ERB_TRK_SX, ERB_TRK_SY, ERB_TRK_SZ, /* scaling (x,y,z) */
+ ERB_NUM_TRACKS
+};
+enum erb_interp { ERB_LINEAR, ERB_STEP, ERB_CUBIC };
+enum erb_extrap { ERB_CLAMP, ERB_EXTEND, ERB_REPEAT };
+
+struct erb_track {
+ enum erb_interp interp; /* interpolation mode */
+ enum erb_extrap extrap; /* extrapolation mode */
+ struct erb_key *keys; /* dynamic array of keyframes */
+ int num_keys, max_keys; /* max_keys: allocated size, num_keys: used */
+};
+