@@ -755,6 +755,102 @@ typedef struct fb_entvars_s {
755755} fb_entvars_t ;
756756#endif
757757
758+ #define ANTILAG_REWIND_MAXHITSCAN 0.250f
759+ #define ANTILAG_REWIND_MAXPROJECTILE 0.080f
760+ #define ANTILAG_TIMESTEP 0.01f
761+ //#define ANTILAG_XERP 0
762+ #define ANTILAG_MAX_PREDICTION 0.02f
763+ #define ANTILAG_MAX_XERP 0.02f
764+ #define ANTILAG_MAXEDICTS 256
765+
766+ #define ANTILAG_MAXSTATES 0x20
767+ #define ANTILAG_MASK 0x1F
768+
769+ #define ANTILAG_FL_REWOUND 0x01
770+ #define ANTILAG_FL_FATALPROTECT 0x02
771+ #define ANTILAG_FL_KNOCKBACKPROTECT 0x04
772+
773+ #define SENDFLAGS_ALL 0xFFFFFF
774+
775+ #define WEPPRED_MAXSTATES 32
776+ #define WEPPREDANIM_SOUND 0x0001
777+ #define WEPPREDANIM_PROJECTILE 0x0002
778+ #define WEPPREDANIM_LGBEAM 0x0004
779+ #define WEPPREDANIM_MUZZLEFLASH 0x0008
780+ #define WEPPREDANIM_DEFAULT 0x0010 // +attack will always be checked on this (unless current frame is +attack waiting
781+ #define WEPPREDANIM_ATTACK 0x0020
782+ #define WEPPREDANIM_BRANCH 0x0040
783+ #define WEPPREDANIM_MOREBYTES 0x0080 // mark if we need "full" 16 bits of flags
784+ #define WEPPREDANIM_SOUNDAUTO 0x0100 | WEPPREDANIM_MOREBYTES
785+ #define WEPPREDANIM_LTIME 0x0200 | WEPPREDANIM_MOREBYTES
786+
787+ #define WEAPONDEF_INIT (1 << 0)
788+ #define WEAPONDEF_FLAGS (1 << 1)
789+ #define WEAPONDEF_ANIM (1 << 2)
790+
791+ #define WEAPONINFO_INDEX (1 << 0)
792+ #define WEAPONINFO_AMMO_SHELLS (1 << 1)
793+ #define WEAPONINFO_AMMO_NAILS (1 << 2)
794+ #define WEAPONINFO_AMMO_ROCKETS (1 << 3)
795+ #define WEAPONINFO_AMMO_CELLS (1 << 4)
796+ #define WEAPONINFO_ATTACK (1 << 5)
797+ #define WEAPONINFO_TIMING (1 << 6)
798+ #define WEAPONINFO_PRED_PING (1 << 7)
799+
800+ #define PROJECTILE_ORIGIN (1 << 0)
801+ #define PROJECTILE_MODEL (1 << 1)
802+ #define PROJECTILE_ANGLES (1 << 2)
803+ #define PROJECTILE_OWNER (1 << 3)
804+ #define PROJECTILE_SPAWN_ORIGIN (1 << 4)
805+
806+ typedef struct weppredanim_s
807+ {
808+ signed char mdlframe ; // frame number in model
809+ unsigned short flags ; // flags from WEPPREDANIM
810+ unsigned short sound ; // WEPPREDANIM_SOUND: sound index to play
811+ unsigned short soundmask ; // WEPPREDANIM_SOUND: bitmask for sound (cl_predict_weaponsound)
812+ unsigned short projectile_model ; // WEPPREDANIM_PROJECTILE: model index of projectile
813+ short projectile_velocity [3 ]; // WEPPREDANIM_PROJECTILE: projectile velocity (v_right, v_forward, v_up)
814+ byte projectile_offset [3 ]; // WEPPREDANIM_PROJECTILE: projectile spawn position (v_right, v_forward, z)
815+ byte nextanim ; // next anim state index
816+ byte altanim ; // WEPPREDANIM_BRANCH: next anim state if condition is fullfilled
817+ short length ; // msec length of anim state (networked in 10ms increments)
818+ } weppredanim_t ;
819+
820+ typedef struct weppreddef_s
821+ {
822+ unsigned short modelindex ; // view model index
823+ unsigned short attack_time ; // attack time in msec
824+
825+ byte impulse ; // impulse for equipping this weapon
826+ int itemflag ; // .items bit for this item
827+
828+ byte anim_number ; // number of anim frames
829+ weppredanim_t anim_states [WEPPRED_MAXSTATES ];
830+ } weppreddef_t ;
831+
832+
833+ struct gedict_s ;
834+ typedef struct antilag_s {
835+ vec3_t rewind_origin [ANTILAG_MAXSTATES ];
836+ vec3_t rewind_velocity [ANTILAG_MAXSTATES ];
837+ vec3_t rewind_platform_offset [ANTILAG_MAXSTATES ];
838+ int rewind_platform_edict [ANTILAG_MAXSTATES ];
839+ float rewind_time [ANTILAG_MAXSTATES ];
840+ byte rewind_frameflags [ANTILAG_MAXSTATES ];
841+ int rewind_seek ;
842+
843+ byte state_flags ;
844+ vec3_t held_origin ;
845+ vec3_t held_velocity ;
846+
847+ struct gedict_s * owner ;
848+
849+ struct antilag_s * prev ;
850+ struct antilag_s * next ;
851+ } antilag_t ;
852+
853+
758854//typedef (void(*)(gedict_t *)) one_edict_func;
759855typedef struct gedict_s
760856{
@@ -1192,6 +1288,7 @@ typedef struct gedict_s
11921288// {
11931289 // let mvdsv know when player has teleported, and adjust for high-ping
11941290 int teleported ;
1291+ float teleport_time ;
11951292// }
11961293
11971294// {
@@ -1230,6 +1327,19 @@ typedef struct gedict_s
12301327 float healtimer ; // internal timer for tracking health replenishment interval
12311328// }
12321329
1330+ // { antilag
1331+ struct antilag_s * antilag_data ;
1332+ int weapon_index ;
1333+ float client_time ;
1334+ float client_lastupdated ;
1335+ float client_nextthink ;
1336+ func_t client_think ;
1337+ float client_thinkindex ;
1338+ float client_ping ;
1339+ float client_predflags ;
1340+ struct gedict_s * weapon_pred ;
1341+ // }
1342+
12331343// { csqc
12341344 func_t SendEntity ;
12351345// }
0 commit comments