]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/animdecide.qh
Simplify headers
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / animdecide.qh
index fa010111bbd64d98059b9bd96b2ce3b52e270bd5..9dc7cf7dbd0dd6273a655cb938f185e383c7d6e2 100644 (file)
@@ -1,33 +1,51 @@
+#ifndef ANIMDECIDE_H
+#define ANIMDECIDE_H
+
+// 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_init(entity e);
-void animdecide_setframes(entity e, float support_blending);
+void animdecide_setimplicitstate(entity e, float onground);
+void animdecide_setframes(entity e, bool support_blending, .int fld_frame, .int fld_frame1time, .int fld_frame2, .int fld_frame2time);
 
 // please network this one
-.float anim_state;
+.int anim_state;
 .float anim_time;
-#define ReadAnimState() do { self.anim_state = ReadByte(); self.anim_time = ReadApproxPastTime(); } while(0)
-#define WriteAnimState(dest) do { WriteByte(dest, self.anim_state); WriteApproxPastTime(dest, self.anim_time); } while(0)
+.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);
-#define ANIMSTATE_DEAD1 1 // base frames: die1
-#define ANIMSTATE_DEAD2 2 // base frames: die2
-#define ANIMSTATE_DUCK 4 // turns walk into duckwalk, jump into duckjump, etc.
-#define ANIMSTATE_FROZEN 8 // force idle
+void animdecide_setstate(entity e, int newstate, float restart);
+const int ANIMSTATE_DEAD1 = 1; // base frames: die1
+const int ANIMSTATE_DEAD2 = 2; // base frames: die2
+const int ANIMSTATE_DUCK = 4; // turns walk into duckwalk, jump into duckjump, etc.
+const int ANIMSTATE_FROZEN = 8; // force idle
 
 // implicit anim states (inferred from velocity, etc.)
-#define ANIMIMPLICITSTATE_INAIR 1
-#define ANIMIMPLICITSTATE_FORWARD 2
-#define ANIMIMPLICITSTATE_BACKWARDS 4
-#define ANIMIMPLICITSTATE_LEFT 8
-#define ANIMIMPLICITSTATE_RIGHT 16
+const int ANIMIMPLICITSTATE_INAIR = 1;
+const int ANIMIMPLICITSTATE_FORWARD = 2;
+const int ANIMIMPLICITSTATE_BACKWARDS = 4;
+const int ANIMIMPLICITSTATE_LEFT = 8;
+const int ANIMIMPLICITSTATE_RIGHT = 16;
+const int ANIMIMPLICITSTATE_JUMPRELEASED = 32;
 
 // explicit actions (networked); negative values are for lower body
 void animdecide_setaction(entity e, float action, float restart);
-#define ANIMACTION_JUMP -1 // jump
-#define ANIMACTION_DRAW 1 // draw
-#define ANIMACTION_PAIN1 2 // pain
-#define ANIMACTION_PAIN2 3 // pain
-#define ANIMACTION_SHOOT 4 // shoot
-#define ANIMACTION_TAUNT 5 // taunt
-#define ANIMACTION_MELEE 6 // melee
+const int ANIMACTION_JUMP = -1; // jump
+const int ANIMACTION_DRAW = 1; // draw
+const int ANIMACTION_PAIN1 = 2; // pain
+const int ANIMACTION_PAIN2 = 3; // pain
+const int ANIMACTION_SHOOT = 4; // shoot
+const int ANIMACTION_TAUNT = 5; // taunt
+const int ANIMACTION_MELEE = 6; // melee
+#endif