From 5dedae0f84d682089cb05ffdac2082450443eb2a Mon Sep 17 00:00:00 2001 From: tzork Date: Tue, 22 Sep 2009 09:08:35 +0000 Subject: [PATCH] eWheel now use .framegroups to save network traffic. eWheels no longer use verbstacks & steerlib_beamsteer for performance reasons. git-svn-id: svn://svn.icculus.org/nexuiz/trunk@7861 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/models/turrets/ewheel-base2.md3 | Bin 0 -> 198052 bytes .../turrets/ewheel-base2.md3.framegroups | 5 + .../server/tturrets/units/unit_ewheel.qc | 225 +++++++----------- 3 files changed, 90 insertions(+), 140 deletions(-) create mode 100644 data/models/turrets/ewheel-base2.md3 create mode 100644 data/models/turrets/ewheel-base2.md3.framegroups diff --git a/data/models/turrets/ewheel-base2.md3 b/data/models/turrets/ewheel-base2.md3 new file mode 100644 index 0000000000000000000000000000000000000000..41217948c3f83aed77d2fd6c06b13761aa8226f6 GIT binary patch literal 198052 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 apRD4OReZ9FPge2CDn41oC;$H$pZwouV6`s* literal 0 HcmV?d00001 diff --git a/data/models/turrets/ewheel-base2.md3.framegroups b/data/models/turrets/ewheel-base2.md3.framegroups new file mode 100644 index 000000000..067d4bc86 --- /dev/null +++ b/data/models/turrets/ewheel-base2.md3.framegroups @@ -0,0 +1,5 @@ +1 1 1 0 // stop +1 29 15 1 // forward slow +1 29 30 1 // forward fast +30 59 15 1 // back slow +30 59 15 1 // back fast diff --git a/data/qcsrc/server/tturrets/units/unit_ewheel.qc b/data/qcsrc/server/tturrets/units/unit_ewheel.qc index 3fdb71b6c..94fb80ed1 100644 --- a/data/qcsrc/server/tturrets/units/unit_ewheel.qc +++ b/data/qcsrc/server/tturrets/units/unit_ewheel.qc @@ -1,3 +1,9 @@ +#define ewheel_amin_stop 0 +#define ewheel_amin_fwd_slow 1 +#define ewheel_amin_fwd_fast 2 +#define ewheel_amin_bck_slow 3 +#define ewheel_amin_bck_fast 4 + void turret_ewheel_projectile_explode() { vector org2; @@ -58,6 +64,7 @@ void ewheel_attack() } +/* float ewheel_moveverb_roam(float eval) { switch (eval) @@ -85,147 +92,96 @@ float ewheel_moveverb_roam(float eval) return VS_CALL_YES_DONE; } +*/ -float ewheel_moveverb_path(float eval) +void ewheel_move_path() { - switch (eval) + // Do we have a path? + if not(self.pathcurrent) + return; + else { - case VCM_EVAL: - - if (self.pathcurrent) - return verb.verb_static_value; - - return VS_CALL_NO; + // Are we close enougth to a path node to switch to the next? + if (vlen(self.origin - self.pathcurrent.origin) < 64) + if (self.pathcurrent.path_next == world) + { + // Path endpoint reached + pathlib_deletepath(self.pathcurrent.owner); + self.pathcurrent = world; - case VCM_DO: - // Do we have a path? - if not(self.pathcurrent) - return VS_CALL_NO; - else - { - // Are we close enougth to a path node to switch to the next? - if (vlen(self.origin - self.pathcurrent.origin) < 64) - if (self.pathcurrent.path_next == world) + if (self.pathgoal) { - // Path endpoint reached - pathlib_deletepath(self.pathcurrent.owner); - self.pathcurrent = world; + if (self.pathgoal.use) + self.pathgoal.use(); - if (self.pathgoal) + if (self.pathgoal.enemy) { - if (self.pathgoal.use) - self.pathgoal.use(); - - if (self.pathgoal.enemy) - { - self.pathcurrent = pathlib_astar(self.pathgoal.origin,self.pathgoal.enemy.origin); - self.pathgoal = self.pathgoal.enemy; - } + self.pathcurrent = pathlib_astar(self.pathgoal.origin,self.pathgoal.enemy.origin); + self.pathgoal = self.pathgoal.enemy; } - else - self.pathgoal = world; } else - self.pathcurrent = self.pathcurrent.path_next; - } - - - if (self.pathcurrent) - { - /* - switch (self.waterlevel) - { - case 0: - case 1: - case 2: - case 3: + self.pathgoal = world; } - */ - - self.moveto = self.pathcurrent.origin; - self.steerto = steerlib_attract2(self.moveto,0.5,500,0.95); - - self.frame += 1; - movelib_move_simple(v_forward,cvar("g_turrets_unit_ewheel_speed_fast"),0.4); + else + self.pathcurrent = self.pathcurrent.path_next; + } - return VS_CALL_YES_DOING; - } - else - return VS_CALL_YES_DONE; - case VCM_REMOVE: + if (self.pathcurrent) + { - if (self.pathcurrent) - pathlib_deletepath(self.pathcurrent.owner); + self.moveto = self.pathcurrent.origin; + self.steerto = steerlib_attract2(self.moveto,0.5,500,0.95); - self.pathcurrent = world; + movelib_move_simple(v_forward,cvar("g_turrets_unit_ewheel_speed_fast"),0.4); - return VS_CALL_YES_DONE; + return; } - - return VS_CALL_YES_DONE; } -float ewheel_moveverb_enemy(float eval) +void ewheel_move_enemy() { - switch (eval) - { - case VCM_EVAL: - if (self.enemy) - { - if (self.spawnflags & TSF_NO_PATHBREAK) - if (self.pathcurrent) - return VS_CALL_NO; - - return verb.verb_static_value; - } - return VS_CALL_NO; - - case VCM_DO: + self.steerto = steerlib_arrive(self.enemy.origin,self.target_range_optimal); - self.steerto = steerlib_arrive(self.enemy.origin,self.target_range_optimal); - self.steerto = steerlib_beamsteer(self.steerto,1024,64,68,256); - self.moveto = self.origin + self.steerto * 128; - - makevectors(self.angles); + //self.steerto = steerlib_standoff(self.enemy.origin,self.target_range_optimal); + //self.steerto = steerlib_beamsteer(self.steerto,1024,64,68,256); + self.moveto = self.origin + self.steerto * 128; - if (self.tur_dist_enemy > self.target_range_optimal) + if (self.tur_dist_enemy > self.target_range_optimal) + { + if ( self.tur_head.spawnshieldtime < 1 ) { - if ( self.tur_head.spawnshieldtime < 1 ) - { - self.frame += 2; - movelib_move_simple(v_forward ,cvar("g_turrets_unit_ewheel_speed_fast"),0.4); - } - else if (self.tur_head.spawnshieldtime < 2) - { - - self.frame += 1; - movelib_move_simple(v_forward,cvar("g_turrets_unit_ewheel_speed_slow"),0.4); - } - else - { - self.frame += 1; - movelib_move_simple(v_forward,cvar("g_turrets_unit_ewheel_speed_slower"),0.4); - } + self.frame = ewheel_amin_fwd_fast; + movelib_move_simple(v_forward ,cvar("g_turrets_unit_ewheel_speed_fast"),0.4); } - else if (self.tur_dist_enemy < self.target_range_min) + else if (self.tur_head.spawnshieldtime < 2) { - self.frame -= 1; - movelib_move_simple(v_forward * -1,cvar("g_turrets_unit_ewheel_speed_slow"),0.4); - } + + self.frame = ewheel_amin_fwd_slow; + movelib_move_simple(v_forward,cvar("g_turrets_unit_ewheel_speed_slow"),0.4); + } else { - movelib_beak_simple(cvar("g_turrets_unit_ewheel_speed_stop")); + self.frame = ewheel_amin_fwd_slow; + movelib_move_simple(v_forward,cvar("g_turrets_unit_ewheel_speed_slower"),0.4); } - - return VS_CALL_YES_DOING; + } + else if (self.tur_dist_enemy < self.target_range_optimal - 10) + { + self.frame = ewheel_amin_bck_slow; + movelib_move_simple(v_forward * -1,cvar("g_turrets_unit_ewheel_speed_slow"),0.4); + } + else + { + self.frame = ewheel_amin_stop; + movelib_beak_simple(cvar("g_turrets_unit_ewheel_speed_stop")); } - return VS_CALL_YES_DONE; } - +/* float ewheel_moveverb_runaway(float eval) { switch (eval) @@ -254,27 +210,13 @@ float ewheel_moveverb_runaway(float eval) return VS_CALL_YES_DONE; } +*/ -float ewheel_moveverb_idle(float eval) +void ewheel_move_idle() { - switch (eval) - { - case VCM_EVAL: - if (self.enemy) - return VS_CALL_NO; - - return verb.verb_static_value; - - case VCM_DO: - self.moveto = self.origin; - - if (vlen(self.velocity)) - movelib_beak_simple(cvar("g_turrets_unit_ewheel_speed_stop")); - - return VS_CALL_YES_DOING; - } - - return VS_CALL_YES_DONE; + self.frame = 0; + if (vlen(self.velocity)) + movelib_beak_simple(cvar("g_turrets_unit_ewheel_speed_stop")); } void ewheel_postthink() @@ -303,14 +245,14 @@ void ewheel_postthink() // Simulate banking self.angles_z = bound(-45,real_angle_y * -2.5,45); - verbstack_pop(self.verbs_move); - - if (self.frame > 40) - self.frame = 1; - - if (self.frame < 1) - self.frame = 40; + if(self.pathcurrent) + ewheel_move_path(); + else if(self.enemy) + ewheel_move_enemy(); + else + ewheel_move_idle(); + //verbstack_pop(self.verbs_move); self.velocity_z = vz; } @@ -349,11 +291,13 @@ void ewheel_diehook() self.pathcurrent = world; + /* if (self.damage_flags & TFL_DMG_DEATH_NORESPAWN) { verbstack_flush(self.verbs_move); remove(self.verbs_move); } + */ } @@ -384,7 +328,7 @@ void turret_ewheel_dinit() self.turret_respawnhook = ewheel_respawnhook; self.turret_diehook = ewheel_diehook; - if (turret_stdproc_init("ewheel_std",0,"models/turrets/ewheel-base.md3","models/turrets/ewheel-gun1.md3") == 0) + if (turret_stdproc_init("ewheel_std",0,"models/turrets/ewheel-base2.md3","models/turrets/ewheel-gun1.md3") == 0) { remove(self); return; @@ -412,12 +356,13 @@ void turret_ewheel_dinit() self.turret_postthink = ewheel_postthink; self.tur_head.frame = 1; - self.verbs_move = spawn(); + //self.verbs_move = spawn(); + //self.verbs_move.owner = self; //verbstack_push(self.verbs_move, ewheel_moveverb_roam, WVM_IDLE, 0, self); - verbstack_push(self.verbs_move, ewheel_moveverb_idle, WVM_IDLE, 0, self); - verbstack_push(self.verbs_move, ewheel_moveverb_enemy, WVM_ENEMY, 0, self); - verbstack_push(self.verbs_move, ewheel_moveverb_path, WVM_PATH, 0, self); + //verbstack_push(self.verbs_move, ewheel_moveverb_idle, WVM_IDLE, 0, self); + //verbstack_push(self.verbs_move, ewheel_moveverb_enemy, WVM_ENEMY, 0, self); + //verbstack_push(self.verbs_move, ewheel_moveverb_path, WVM_PATH, 0, self); //verbstack_push(self.verbs_move, ewheel_moveverb_runaway,WVM_PANIC, 0, self); // Convert from dgr / sec to dgr / tic @@ -447,7 +392,7 @@ void spawnfunc_turret_ewheel() { g_turrets_common_precash(); - precache_model ("models/turrets/ewheel-base.md3"); + precache_model ("models/turrets/ewheel-base2.md3"); precache_model ("models/turrets/ewheel-gun1.md3"); self.think = turret_ewheel_dinit; -- 2.39.2