// must be called at least once to initialize, or when modelindex is changed void animdecide_load_if_needed(entity e); // client side frame inferring 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 .int anim_state; .float anim_time; .float anim_lower_action; .float anim_lower_time; .float anim_upper_action; .float anim_upper_time; // when copying entities, copy these too .int 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); const float ANIMSTATE_DEAD1 = 1; // base frames: die1 const float ANIMSTATE_DEAD2 = 2; // base frames: die2 const float ANIMSTATE_DUCK = 4; // turns walk into duckwalk, jump into duckjump, etc. const float ANIMSTATE_FROZEN = 8; // force idle // implicit anim states (inferred from velocity, etc.) const float ANIMIMPLICITSTATE_INAIR = 1; const float ANIMIMPLICITSTATE_FORWARD = 2; const float ANIMIMPLICITSTATE_BACKWARDS = 4; const float ANIMIMPLICITSTATE_LEFT = 8; const float ANIMIMPLICITSTATE_RIGHT = 16; const float ANIMIMPLICITSTATE_JUMPRELEASED = 32; // explicit actions (networked); negative values are for lower body void animdecide_setaction(entity e, float action, float restart); const float ANIMACTION_JUMP = -1; // jump const float ANIMACTION_DRAW = 1; // draw const float ANIMACTION_PAIN1 = 2; // pain const float ANIMACTION_PAIN2 = 3; // pain const float ANIMACTION_SHOOT = 4; // shoot const float ANIMACTION_TAUNT = 5; // taunt const float ANIMACTION_MELEE = 6; // melee