// client side frame inferring
void animdecide_init(entity e);
-void animdecide_setframes(entity e, float support_blending);
+
+void animdecide_setimplicitstate(entity e, float onground);
+void animdecide_setframes(entity e, float support_blending, .float fld_frame, .float fld_frame1time, .float fld_frame2, .float fld_frame2time);
// please network this one
.float anim_state;
.float anim_upper_action;
.float anim_upper_time;
+// when copying entities, copy these too
+.float anim_implicit_state;
+.float anim_implicit_time;
+.float anim_lower_implicit_action;
+.float anim_lower_implicit_time;
+.float anim_upper_implicit_action;
+.float anim_upper_implicit_time;
+
// explicit anim states (networked)
void animdecide_setstate(entity e, float newstate, float restart);
#define ANIMSTATE_DEAD1 1 // base frames: die1
#define ANIMIMPLICITSTATE_BACKWARDS 4
#define ANIMIMPLICITSTATE_LEFT 8
#define ANIMIMPLICITSTATE_RIGHT 16
+#define ANIMIMPLICITSTATE_JUMPRELEASED 32
// explicit actions (networked); negative values are for lower body
void animdecide_setaction(entity e, float action, float restart);