[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