[nexuiz-commits] r7579 - in branches/nexuiz-2.0: . data/models/onslaught data/qcsrc/client data/qcsrc/common data/qcsrc/server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Tue Sep 1 02:56:53 EDT 2009
Author: div0
Date: 2009-09-01 02:56:52 -0400 (Tue, 01 Sep 2009)
New Revision: 7579
Added:
branches/nexuiz-2.0/data/models/onslaught/shockwavetransring.md3.framegroups
branches/nexuiz-2.0/data/qcsrc/client/modeleffects.qc
Modified:
branches/nexuiz-2.0/.patchsets
branches/nexuiz-2.0/data/qcsrc/client/Main.qc
branches/nexuiz-2.0/data/qcsrc/client/progs.src
branches/nexuiz-2.0/data/qcsrc/common/constants.qh
branches/nexuiz-2.0/data/qcsrc/server/constants.qh
branches/nexuiz-2.0/data/qcsrc/server/ctf.qc
branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc
branches/nexuiz-2.0/data/qcsrc/server/mode_onslaught.qc
Log:
r7514 | div0 | 2009-08-25 02:55:33 -0400 (Tue, 25 Aug 2009) | 2 lines
onslaught shockwave: make this feature available to all game modes by refactoring it out
r7515 | div0 | 2009-08-25 03:22:16 -0400 (Tue, 25 Aug 2009) | 2 lines
remove stupid prints and unused function
r7526 | div0 | 2009-08-26 03:31:57 -0400 (Wed, 26 Aug 2009) | 2 lines
shockwave is now clientside (smoother)
r7527 | lordhavoc | 2009-08-26 05:45:09 -0400 (Wed, 26 Aug 2009) | 2 lines
fix compile error
r7532 | div0 | 2009-08-26 10:02:55 -0400 (Wed, 26 Aug 2009) | 2 lines
onslaught: change another model effect to be clientside. PLEASE TEST AND POSSIBLY FIX.
r7533 | div0 | 2009-08-26 10:05:22 -0400 (Wed, 26 Aug 2009) | 2 lines
make CTF flag cap shockwave clientside too
r7570 | div0 | 2009-09-01 01:54:13 -0400 (Tue, 01 Sep 2009) | 2 lines
fix size calc in shockwave
r7571 | div0 | 2009-09-01 02:00:52 -0400 (Tue, 01 Sep 2009) | 2 lines
proper shockwave origin
r7572 | div0 | 2009-09-01 02:09:41 -0400 (Tue, 01 Sep 2009) | 2 lines
add a missing file
Modified: branches/nexuiz-2.0/.patchsets
===================================================================
--- branches/nexuiz-2.0/.patchsets 2009-09-01 06:53:37 UTC (rev 7578)
+++ branches/nexuiz-2.0/.patchsets 2009-09-01 06:56:52 UTC (rev 7579)
@@ -1,2 +1,2 @@
master = svn://svn.icculus.org/nexuiz/trunk
-revisions_applied = 1-7513,7516-7525,7528-7531,7534-7563,7565-7569,7573-7577
+revisions_applied = 1-7563,7565-7577
Copied: branches/nexuiz-2.0/data/models/onslaught/shockwavetransring.md3.framegroups (from rev 7533, trunk/data/models/onslaught/shockwavetransring.md3.framegroups)
===================================================================
--- branches/nexuiz-2.0/data/models/onslaught/shockwavetransring.md3.framegroups (rev 0)
+++ branches/nexuiz-2.0/data/models/onslaught/shockwavetransring.md3.framegroups 2009-09-01 06:56:52 UTC (rev 7579)
@@ -0,0 +1 @@
+1 24 20 1
Modified: branches/nexuiz-2.0/data/qcsrc/client/Main.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/Main.qc 2009-09-01 06:53:37 UTC (rev 7578)
+++ branches/nexuiz-2.0/data/qcsrc/client/Main.qc 2009-09-01 06:56:52 UTC (rev 7579)
@@ -806,6 +806,7 @@
case ENT_CLIENT_CLIENTDATA: Ent_ClientData(); break;
case ENT_CLIENT_RANDOMSEED: Ent_RandomSeed(); break;
case ENT_CLIENT_WALL: Ent_Wall(); break;
+ case ENT_CLIENT_MODELEFFECT: Ent_ModelEffect(); break;
default:
error(strcat("unknown entity type in CSQC_Ent_Update: ", ftos(self.enttype), "\n"));
break;
Copied: branches/nexuiz-2.0/data/qcsrc/client/modeleffects.qc (from rev 7527, trunk/data/qcsrc/client/modeleffects.qc)
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/modeleffects.qc (rev 0)
+++ branches/nexuiz-2.0/data/qcsrc/client/modeleffects.qc 2009-09-01 06:56:52 UTC (rev 7579)
@@ -0,0 +1,66 @@
+.float frame1time;
+.float lifetime, fadetime;
+.float teleport_time;
+.float scale1, scale2;
+
+void ModelEffect_Draw()
+{
+ self.angles = self.angles + frametime * self.avelocity;
+ self.origin = self.origin + frametime * self.velocity;
+ self.scale = self.scale1 + (self.scale2 - self.scale1) * (time - self.teleport_time) / (self.lifetime + self.fadetime - self.teleport_time);
+ self.alpha = self.cnt * bound(0, 1 - (time - self.lifetime) / self.fadetime, 1);
+ if(self.alpha < ALPHA_MIN_VISIBLE)
+ {
+ remove(self);
+ return;
+ }
+ if(self.scale <= 0)
+ return;
+ R_AddEntity(self);
+}
+
+void Ent_ModelEffect()
+{
+ float f;
+ entity e;
+
+ self.classname = "modeleffect_spawner";
+
+ f = ReadByte();
+
+ e = spawn();
+ e.classname = "modeleffect";
+ e.model = "from network";
+ e.modelindex = ReadShort();
+ e.frame = ReadByte();
+ e.frame1time = time;
+ e.origin_x = ReadCoord();
+ e.origin_y = ReadCoord();
+ e.origin_z = ReadCoord();
+ if(f & 1)
+ {
+ e.velocity_x = ReadCoord();
+ e.velocity_y = ReadCoord();
+ e.velocity_z = ReadCoord();
+ }
+ if(f & 2)
+ {
+ e.angles_x = ReadAngle();
+ e.angles_y = ReadAngle();
+ e.angles_z = ReadAngle();
+ }
+ if(f & 4)
+ {
+ e.avelocity_x = ReadAngle();
+ e.avelocity_y = ReadAngle();
+ e.avelocity_z = ReadAngle();
+ }
+ e.scale1 = ReadShort() / 256.0;
+ e.scale2 = ReadShort() / 256.0;
+ e.lifetime = time + ReadByte() * 0.01;
+ e.fadetime = ReadByte() * 0.01;
+ e.teleport_time = time;
+ e.cnt = ReadByte() / 255.0; // actually alpha
+
+ e.draw = ModelEffect_Draw;
+}
Modified: branches/nexuiz-2.0/data/qcsrc/client/progs.src
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/progs.src 2009-09-01 06:53:37 UTC (rev 7578)
+++ branches/nexuiz-2.0/data/qcsrc/client/progs.src 2009-09-01 06:56:52 UTC (rev 7579)
@@ -38,6 +38,7 @@
casings.qc
effects.qc
wall.qc
+modeleffects.qc
//vehicles/spiderbot.qc
Main.qc
Modified: branches/nexuiz-2.0/data/qcsrc/common/constants.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/common/constants.qh 2009-09-01 06:53:37 UTC (rev 7578)
+++ branches/nexuiz-2.0/data/qcsrc/common/constants.qh 2009-09-01 06:56:52 UTC (rev 7579)
@@ -82,6 +82,7 @@
const float ENT_CLIENT_RANDOMSEED = 19;
const float ENT_CLIENT_WALL = 20;
const float ENT_CLIENT_SPIDERBOT = 21;
+const float ENT_CLIENT_MODELEFFECT = 22;
const float ENT_CLIENT_TURRET = 40;
Modified: branches/nexuiz-2.0/data/qcsrc/server/constants.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/constants.qh 2009-09-01 06:53:37 UTC (rev 7578)
+++ branches/nexuiz-2.0/data/qcsrc/server/constants.qh 2009-09-01 06:56:52 UTC (rev 7579)
@@ -1,10 +1,5 @@
-<<<<<<< .working
string CVAR_CHECK_DEFAULT = "ff6f4ae047891b3b61ecfc5b3d3b38b4";
string CVAR_CHECK_WEAPONS = "a7ca57b891d66754b856e24e5c1745e3";
-=======
-string CVAR_CHECK_DEFAULT = "ff6f4ae047891b3b61ecfc5b3d3b38b4";
-string CVAR_CHECK_WEAPONS = "a7ca57b891d66754b856e24e5c1745e3";
->>>>>>> .merge-right.r7577
float FALSE = 0;
float TRUE = 1;
Modified: branches/nexuiz-2.0/data/qcsrc/server/ctf.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/ctf.qc 2009-09-01 06:53:37 UTC (rev 7578)
+++ branches/nexuiz-2.0/data/qcsrc/server/ctf.qc 2009-09-01 06:56:52 UTC (rev 7579)
@@ -407,36 +407,9 @@
DropFlag(self, e, world);
};
-void flag_cap_ring_think()
-{
- self.nextthink = time + 0.05;
- if(self.count > 24)
- {
- self.think = SUB_Remove;
- return;
- }
-
- self.scale = self.count / 30;
-
- self.frame = self.count;
-
- self.count += 1;
- self.alpha = self.alpha-0.04;
-};
-
void flag_cap_ring_spawn(vector org)
{
- entity e;
- e = spawn();
- setmodel(e, "models/ctf/shockwavetransring.md3");
- org_z=org_z-15;
- setorigin(e, org);
-
- e.count = 1;
- e.alpha = 0.9;
-
- e.think = flag_cap_ring_think;
- e.nextthink = time;
+ shockwave_spawn("models/ctf/shockwavetransring.md3", org - '0 0 15', -0.8, 0, 1);
};
void FlagTouch()
Modified: branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc 2009-09-01 06:53:37 UTC (rev 7578)
+++ branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc 2009-09-01 06:56:52 UTC (rev 7579)
@@ -2466,3 +2466,84 @@
return world;
}
+
+.float scale2;
+
+float modeleffect_SendEntity(entity to, float sf)
+{
+ float f;
+ WriteByte(MSG_ENTITY, ENT_CLIENT_MODELEFFECT);
+
+ f = 0;
+ if(self.velocity != '0 0 0')
+ f |= 1;
+ if(self.angles != '0 0 0')
+ f |= 2;
+ if(self.avelocity != '0 0 0')
+ f |= 4;
+
+ WriteByte(MSG_ENTITY, f);
+ WriteShort(MSG_ENTITY, self.modelindex);
+ WriteByte(MSG_ENTITY, self.frame);
+ WriteCoord(MSG_ENTITY, self.origin_x);
+ WriteCoord(MSG_ENTITY, self.origin_y);
+ WriteCoord(MSG_ENTITY, self.origin_z);
+ if(f & 1)
+ {
+ WriteCoord(MSG_ENTITY, self.velocity_x);
+ WriteCoord(MSG_ENTITY, self.velocity_y);
+ WriteCoord(MSG_ENTITY, self.velocity_z);
+ }
+ if(f & 2)
+ {
+ WriteCoord(MSG_ENTITY, self.angles_x);
+ WriteCoord(MSG_ENTITY, self.angles_y);
+ WriteCoord(MSG_ENTITY, self.angles_z);
+ }
+ if(f & 4)
+ {
+ WriteCoord(MSG_ENTITY, self.avelocity_x);
+ WriteCoord(MSG_ENTITY, self.avelocity_y);
+ WriteCoord(MSG_ENTITY, self.avelocity_z);
+ }
+ WriteShort(MSG_ENTITY, self.scale * 256.0);
+ WriteShort(MSG_ENTITY, self.scale2 * 256.0);
+ WriteByte(MSG_ENTITY, self.teleport_time * 100.0);
+ WriteByte(MSG_ENTITY, self.fade_time * 100.0);
+ WriteByte(MSG_ENTITY, self.alpha * 255.0);
+
+ return TRUE;
+}
+
+void modeleffect_spawn(string m, float f, vector o, vector v, vector ang, vector angv, float s0, float s2, float a, float t1, float t2)
+{
+ entity e;
+ float sz;
+ e = spawn();
+ e.classname = "modeleffect";
+ setmodel(e, m);
+ e.frame = f;
+ setorigin(e, o);
+ e.velocity = v;
+ e.angles = ang;
+ e.avelocity = angv;
+ e.alpha = a;
+ e.teleport_time = t1;
+ e.fade_time = t2;
+ if(s0 >= 0)
+ e.scale = s0 / max6(-e.mins_x, -e.mins_y, -e.mins_z, e.maxs_x, e.maxs_y, e.maxs_z);
+ else
+ e.scale = -s0;
+ if(s2 >= 0)
+ e.scale2 = s2 / max6(-e.mins_x, -e.mins_y, -e.mins_z, e.maxs_x, e.maxs_y, e.maxs_z);
+ else
+ e.scale2 = -s2;
+ sz = max(e.scale, e.scale2);
+ setsize(e, e.mins * sz, e.maxs * sz);
+ Net_LinkEntity(e, FALSE, 0.1, modeleffect_SendEntity);
+}
+
+void shockwave_spawn(string m, vector org, float sz, float t1, float t2)
+{
+ return modeleffect_spawn(m, 0, org, '0 0 0', '0 0 0', '0 0 0', 0, sz, 1, t1, t2);
+}
Modified: branches/nexuiz-2.0/data/qcsrc/server/mode_onslaught.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/mode_onslaught.qc 2009-09-01 06:53:37 UTC (rev 7578)
+++ branches/nexuiz-2.0/data/qcsrc/server/mode_onslaught.qc 2009-09-01 06:56:52 UTC (rev 7579)
@@ -400,36 +400,11 @@
}
};
-void onslaught_generator_ring_think()
-{
- self.nextthink = time + 0.05;
- if(self.count > 24)
- {
- self.think = SUB_Remove;
- return;
- }
-
- self.scale = self.count * 4;
-
- self.frame = self.count;
-
- self.count += 1;
- self.alpha = 0.1;
-};
-
void onslaught_generator_ring_spawn(vector org)
{
- entity e;
- e = spawn();
- setmodel(e, "models/onslaught/shockwavetransring.md3");
- setorigin(e, org);
-
- e.count = 1;
- e.alpha = 0;
-
- e.think = onslaught_generator_ring_think;
- e.nextthink = time + 0.05;
+ modeleffect_spawn("models/onslaught/shockwavetransring.md3", 0, org, '0 0 0', '0 0 0', '0 0 0', 0, -16, 0.1, 1.25, 0.25);
};
+
void onslaught_generator_ray_think()
{
self.nextthink = time + 0.05;
@@ -461,41 +436,9 @@
e.nextthink = time + 0.05;
};
-void onslaught_generator_shockwave_think()
-{
- self.nextthink = time + 0.05;
- if(self.count > 25)
- {
- self.think = SUB_Remove;
- return;
- }
-
- if(self.count > 15)
- self.alpha -= 0.1;
- else
- self.alpha = 1;
-
- self.scale = self.count * 4;
- setsize(self, self.mins * self.scale, self.maxs * self.scale);
- self.frame = self.count;
-
- self.count +=1;
-};
-
void onslaught_generator_shockwave_spawn(vector org)
{
- entity e;
- e = spawn();
- setmodel(e, "models/onslaught/shockwave.md3");
- setorigin(e, org);
-
- e.alpha = 0;
- e.frame = 0;
- e.count = 0;
-
-
- e.think = onslaught_generator_shockwave_think;
- e.nextthink = time + 0.05;
+ shockwave_spawn("models/onslaught/shockwave.md3", org, -64, 0.75, 0.5);
};
void onslaught_generator_damage_think()
More information about the nexuiz-commits
mailing list