[nexuiz-commits] r7861 - in trunk/data: models/turrets qcsrc/server/tturrets/units

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Tue Sep 22 05:08:37 EDT 2009


Author: tzork
Date: 2009-09-22 05:08:35 -0400 (Tue, 22 Sep 2009)
New Revision: 7861

Added:
   trunk/data/models/turrets/ewheel-base2.md3
   trunk/data/models/turrets/ewheel-base2.md3.framegroups
Modified:
   trunk/data/qcsrc/server/tturrets/units/unit_ewheel.qc
Log:
eWheel now use .framegroups to save network traffic.
eWheels no longer use verbstacks & steerlib_beamsteer for performance reasons.


Added: trunk/data/models/turrets/ewheel-base2.md3
===================================================================
(Binary files differ)


Property changes on: trunk/data/models/turrets/ewheel-base2.md3
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/models/turrets/ewheel-base2.md3.framegroups
===================================================================
--- trunk/data/models/turrets/ewheel-base2.md3.framegroups	                        (rev 0)
+++ trunk/data/models/turrets/ewheel-base2.md3.framegroups	2009-09-22 09:08:35 UTC (rev 7861)
@@ -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

Modified: trunk/data/qcsrc/server/tturrets/units/unit_ewheel.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/unit_ewheel.qc	2009-09-21 14:40:58 UTC (rev 7860)
+++ trunk/data/qcsrc/server/tturrets/units/unit_ewheel.qc	2009-09-22 09:08:35 UTC (rev 7861)
@@ -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 @@
 
 }
 
+/*
 float ewheel_moveverb_roam(float eval)
 {
     switch (eval)
@@ -85,147 +92,96 @@
 
     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:
+        // 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;
 
-        if (self.pathcurrent)
-            return verb.verb_static_value;
-
-        return VS_CALL_NO;
-
-    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;
             }
-            */
+            else
+                self.pathcurrent = self.pathcurrent.path_next;
+    }
 
-            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);
+    if (self.pathcurrent)
+    {
 
-            return VS_CALL_YES_DOING;
-        }
-        else
-            return VS_CALL_YES_DONE;
+        self.moveto = self.pathcurrent.origin;
+        self.steerto = steerlib_attract2(self.moveto,0.5,500,0.95);
 
-    case VCM_REMOVE:
+        movelib_move_simple(v_forward,cvar("g_turrets_unit_ewheel_speed_fast"),0.4);
 
-        if (self.pathcurrent)
-            pathlib_deletepath(self.pathcurrent.owner);
-
-        self.pathcurrent = world;
-
-        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;
-        }
+    self.steerto = steerlib_arrive(self.enemy.origin,self.target_range_optimal);
 
-        return VS_CALL_NO;
+    //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;
 
-    case VCM_DO:
-
-        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);
-
-        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 @@
 
     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,15 +245,15 @@
     // Simulate banking
     self.angles_z = bound(-45,real_angle_y * -2.5,45);
 
-    verbstack_pop(self.verbs_move);
+    if(self.pathcurrent)
+        ewheel_move_path();
+    else if(self.enemy)
+        ewheel_move_enemy();
+    else
+        ewheel_move_idle();
 
-    if (self.frame > 40)
-        self.frame = 1;
+    //verbstack_pop(self.verbs_move);
 
-    if (self.frame < 1)
-        self.frame = 40;
-
-
     self.velocity_z = vz;
 }
 
@@ -349,11 +291,13 @@
 
     self.pathcurrent = world;
 
+    /*
     if (self.damage_flags & TFL_DMG_DEATH_NORESPAWN)
     {
         verbstack_flush(self.verbs_move);
         remove(self.verbs_move);
     }
+    */
 
 }
 
@@ -384,7 +328,7 @@
     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 @@
     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 @@
 {
     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;



More information about the nexuiz-commits mailing list