r5691 - in trunk/data/qcsrc/server: . tturrets/units

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Thu Jan 29 07:12:43 EST 2009


Author: div0
Date: 2009-01-29 07:12:43 -0500 (Thu, 29 Jan 2009)
New Revision: 5691

Modified:
   trunk/data/qcsrc/server/cl_client.qc
   trunk/data/qcsrc/server/clientcommands.qc
   trunk/data/qcsrc/server/csqcprojectile.qc
   trunk/data/qcsrc/server/csqcprojectile.qh
   trunk/data/qcsrc/server/ent_cs.qc
   trunk/data/qcsrc/server/g_casings.qc
   trunk/data/qcsrc/server/g_damage.qc
   trunk/data/qcsrc/server/g_triggers.qc
   trunk/data/qcsrc/server/g_violence.qc
   trunk/data/qcsrc/server/g_world.qc
   trunk/data/qcsrc/server/miscfunctions.qc
   trunk/data/qcsrc/server/mode_onslaught.qc
   trunk/data/qcsrc/server/scores.qc
   trunk/data/qcsrc/server/tturrets/units/unit_hellion.qc
   trunk/data/qcsrc/server/tturrets/units/unit_hk.qc
   trunk/data/qcsrc/server/tturrets/units/unit_mlrs.qc
   trunk/data/qcsrc/server/tturrets/units/unit_walker.qc
   trunk/data/qcsrc/server/w_common.qc
   trunk/data/qcsrc/server/w_crylink.qc
   trunk/data/qcsrc/server/w_electro.qc
   trunk/data/qcsrc/server/w_grenadelauncher.qc
   trunk/data/qcsrc/server/w_hagar.qc
   trunk/data/qcsrc/server/w_hlac.qc
   trunk/data/qcsrc/server/w_hook.qc
   trunk/data/qcsrc/server/w_laser.qc
   trunk/data/qcsrc/server/w_porto.qc
   trunk/data/qcsrc/server/w_rocketlauncher.qc
   trunk/data/qcsrc/server/w_seeker.qc
   trunk/data/qcsrc/server/waypointsprites.qc
Log:
make all assignments to SendEntity go through Net_LinkEntity; this makes fteqcc detect some type errors


Modified: trunk/data/qcsrc/server/cl_client.qc
===================================================================
--- trunk/data/qcsrc/server/cl_client.qc	2009-01-28 21:02:40 UTC (rev 5690)
+++ trunk/data/qcsrc/server/cl_client.qc	2009-01-29 12:12:43 UTC (rev 5691)
@@ -44,12 +44,9 @@
 
 void ClientData_Attach()
 {
-	self.clientdata = spawn();
-	self.clientdata.SendEntity = ClientData_Send;
-	self.clientdata.effects = EF_NODEPTHTEST;
+	Net_LinkEntity(self.clientdata = spawn(), FALSE, 0, ClientData_Send);
 	self.clientdata.drawonlytoclient = self;
 	self.clientdata.owner = self;
-	setmodel(self.clientdata, "null");
 }
 
 void ClientData_Detach()
@@ -921,12 +918,7 @@
 
 void ClientInit_Spawn()
 {
-	entity e;
-	e = spawn();
-	e.classname = "ent_client_init";
-	e.SendEntity = ClientInit_SendEntity;
-	setmodel(e, "null");
-	e.effects = EF_NODEPTHTEST;
+	Net_LinkEntity(spawn(), FALSE, 0, ClientInit_SendEntity);
 }
 
 /*

Modified: trunk/data/qcsrc/server/clientcommands.qc
===================================================================
--- trunk/data/qcsrc/server/clientcommands.qc	2009-01-28 21:02:40 UTC (rev 5690)
+++ trunk/data/qcsrc/server/clientcommands.qc	2009-01-29 12:12:43 UTC (rev 5691)
@@ -36,9 +36,7 @@
 }
 void Nagger_Init()
 {
-	nagger = spawn();
-	Net_LinkEntity(nagger);
-	nagger.SendEntity = Nagger_SendEntity;
+	Net_LinkEntity(nagger = spawn(), FALSE, 0, Nagger_SendEntity);
 }
 void Nagger_VoteChanged()
 {

Modified: trunk/data/qcsrc/server/csqcprojectile.qc
===================================================================
--- trunk/data/qcsrc/server/csqcprojectile.qc	2009-01-28 21:02:40 UTC (rev 5690)
+++ trunk/data/qcsrc/server/csqcprojectile.qc	2009-01-29 12:12:43 UTC (rev 5691)
@@ -31,9 +31,9 @@
 	return 1;
 }
 
-void CSQCProjectile(entity e, float clientanimate, float type)
+void CSQCProjectile(entity e, float clientanimate, float type, float docull)
 {
-	e.SendEntity = CSQCProjectile_SendEntity;
+	Net_LinkEntity(e, docull, 0, CSQCProjectile_SendEntity);
 	
 	e.csqcprojectile_clientanimate = clientanimate;
 	
@@ -46,7 +46,6 @@
 		e.gravity = 0;
 
 	e.csqcprojectile_type = type;
-	e.SendFlags = 0xFFFFFF;
 }
 
 void UpdateCSQCProjectile(entity e)

Modified: trunk/data/qcsrc/server/csqcprojectile.qh
===================================================================
--- trunk/data/qcsrc/server/csqcprojectile.qh	2009-01-28 21:02:40 UTC (rev 5690)
+++ trunk/data/qcsrc/server/csqcprojectile.qh	2009-01-29 12:12:43 UTC (rev 5691)
@@ -1,4 +1,4 @@
 .float csqcprojectile_clientanimate;
 
-void CSQCProjectile(entity e, float clientanimate, float type);
+void CSQCProjectile(entity e, float clientanimate, float type, float docull);
 void UpdateCSQCProjectile(entity e);

Modified: trunk/data/qcsrc/server/ent_cs.qc
===================================================================
--- trunk/data/qcsrc/server/ent_cs.qc	2009-01-28 21:02:40 UTC (rev 5690)
+++ trunk/data/qcsrc/server/ent_cs.qc	2009-01-29 12:12:43 UTC (rev 5691)
@@ -36,7 +36,7 @@
 	return TRUE;
 }
 
-float entcs_send(entity to)
+float entcs_send(entity to, float sf)
 {
 	entity o;
 	o = self.owner;
@@ -73,11 +73,8 @@
 	ent.owner = self;
 	ent.think = entcs_think;
 	ent.nextthink = time;
-	ent.effects = EF_NODEPTHTEST | EF_LOWPRECISION;
-	ent.model = "entcs_sender";
-	ent.modelindex = 1;
 
-	ent.SendEntity = entcs_send;
+	Net_LinkEntity(ent, FALSE, 0, entcs_send);
 	ent.customizeentityforclient = entcs_customize;
 
 	self.entcs = ent;

Modified: trunk/data/qcsrc/server/g_casings.qc
===================================================================
--- trunk/data/qcsrc/server/g_casings.qc	2009-01-28 21:02:40 UTC (rev 5690)
+++ trunk/data/qcsrc/server/g_casings.qc	2009-01-29 12:12:43 UTC (rev 5691)
@@ -21,13 +21,8 @@
 	e.origin = org;
 	e.velocity = vel;
 	e.angles = ang;
-
 	e.oldorigin_x = compressShortVector(e.velocity);
 
-	setmodel(e, "null");
-	e.SendEntity = Casing_SendEntity;
-
-	e.nextthink = time + 0.2;
-	e.think = SUB_Remove;
+	Net_LinkEntity(e, TRUE, 0.2, Casing_SendEntity);
 		// 0.2s should be enough time for all clients to receive this ent once, do the gibbage and be done with it
 }

Modified: trunk/data/qcsrc/server/g_damage.qc
===================================================================
--- trunk/data/qcsrc/server/g_damage.qc	2009-01-28 21:02:40 UTC (rev 5690)
+++ trunk/data/qcsrc/server/g_damage.qc	2009-01-29 12:12:43 UTC (rev 5691)
@@ -25,22 +25,17 @@
 	entity e;
 
 	e = spawn();
-	e.classname = "damageinfo";
 	setorigin(e, org);
-	setmodel(e, "null");
-	e.think = SUB_Remove;
-	e.nextthink = time + 0.2;
 	e.projectiledeathtype = deathtype;
 	e.dmg = coredamage;
 	e.dmg_edge = edgedamage;
 	e.dmg_radius = rad;
 	e.dmg_force = vlen(force);
 	e.velocity = force;
-	e.effects = EF_NODEPTHTEST; // needs to be, sorry
 
 	e.oldorigin_x = compressShortVector(e.velocity);
 
-	e.SendEntity = Damage_DamageInfo_SendEntity;
+	Net_LinkEntity(e, TRUE, 0.2, Damage_DamageInfo_SendEntity);
 }
 
 #define DAMAGE_CENTERPRINT_SPACER NEWLINES

Modified: trunk/data/qcsrc/server/g_triggers.qc
===================================================================
--- trunk/data/qcsrc/server/g_triggers.qc	2009-01-28 21:02:40 UTC (rev 5690)
+++ trunk/data/qcsrc/server/g_triggers.qc	2009-01-29 12:12:43 UTC (rev 5691)
@@ -632,19 +632,16 @@
 	if(self.noise != "")
 		precache_sound (self.noise);
 
-	self.effects = EF_NODEPTHTEST;
-	self.SendEntity = pointparticles_SendEntity;
 	if(!self.modelindex)
 	{
-		vector misave, masave;
-		misave = self.mins;
-		masave = self.maxs;
-		setmodel(self, "null");
-		setorigin(self, self.origin + misave);
-		setsize(self, '0 0 0', masave - misave);
+		setorigin(self, self.origin + self.mins);
+		setsize(self, '0 0 0', self.maxs - self.mins);
 	}
 	if(!self.cnt)
 		self.cnt = particleeffectnum(self.mdl);
+
+	Net_LinkEntity(self, FALSE, 0, pointparticles_SendEntity);
+
 	IFTARGETED
 	{
 		self.use = pointparticles_use;
@@ -682,7 +679,7 @@
 	spawnfunc_func_pointparticles();
 }
 
-float rainsnow_SendEntity(float to)
+float rainsnow_SendEntity(entity to, float sf)
 {
 	WriteByte(MSG_ENTITY, ENT_CLIENT_RAINSNOW);
 	WriteByte(MSG_ENTITY, self.state);
@@ -730,18 +727,9 @@
 		self.count = 65535;
 
 	self.state = 1; // 1 is rain, 0 is snow
-	self.effects = EF_NODEPTHTEST;
-	self.SendEntity = rainsnow_SendEntity;
 	self.Version = 1;
 
-	if(!self.modelindex)
-	{
-		vector misave, masave;
-		misave = self.mins;
-		masave = self.maxs;
-		setmodel(self, "null");
-		setsize(self, misave, masave);
-	}
+	Net_LinkEntity(self, FALSE, 0, rainsnow_SendEntity);
 };
 
 
@@ -777,18 +765,9 @@
 		self.count = 65535;
 
 	self.state = 0; // 1 is rain, 0 is snow
-	self.effects = EF_NODEPTHTEST;
-	self.SendEntity = rainsnow_SendEntity;
 	self.Version = 1;
 
-	if(!self.modelindex)
-	{
-		vector misave, masave;
-		misave = self.mins;
-		masave = self.maxs;
-		setmodel(self, "null");
-		setsize(self, misave, masave);
-	}
+	Net_LinkEntity(self, FALSE, 0, rainsnow_SendEntity);
 };
 
 
@@ -1022,11 +1001,10 @@
 	self.nextthink = time;
 	InitializeEntity(self, misc_laser_init, INITPRIO_FINDTARGET);
 
-	self.effects = EF_NODEPTHTEST;
-	self.SendEntity = laser_SendEntity;
-	setmodel(self, "null");
 	self.mangle = self.angles;
 
+	Net_LinkEntity(self, FALSE, 0, laser_SendEntity);
+
 	IFTARGETED
 	{
 		self.reset = laser_reset;

Modified: trunk/data/qcsrc/server/g_violence.qc
===================================================================
--- trunk/data/qcsrc/server/g_violence.qc	2009-01-28 21:02:40 UTC (rev 5690)
+++ trunk/data/qcsrc/server/g_violence.qc	2009-01-29 12:12:43 UTC (rev 5691)
@@ -23,12 +23,6 @@
 	e.state = type;
 	if(sv_gentle)
 		e.state |= 0x80; // "force gentle" bit
-	e.SendEntity = Violence_GibSplash_SendEntity;
-	e.nextthink = time + 0.2;
-	e.think = SUB_Remove;
-		// 0.2s should be enough time for all clients to receive this ent once, do the gibbage and be done with it
-	setmodel(e, "null");
-	e.effects = EF_NODEPTHTEST; // show gibs from around the corner
 	setorigin(e, org);
 	setsize(e, mi, ma);
 	e.velocity = dir;
@@ -36,6 +30,8 @@
 	e.oldorigin_x = compressShortVector(e.velocity);
 	e.oldorigin_y = compressShortVector(e.mins);
 	e.oldorigin_z = compressShortVector(e.maxs);
+
+	Net_LinkEntity(e, FALSE, 0.2, Violence_GibSplash_SendEntity);
 }
 
 void Violence_GibSplash(entity source, float type, float amount)

Modified: trunk/data/qcsrc/server/g_world.qc
===================================================================
--- trunk/data/qcsrc/server/g_world.qc	2009-01-28 21:02:40 UTC (rev 5690)
+++ trunk/data/qcsrc/server/g_world.qc	2009-01-29 12:12:43 UTC (rev 5691)
@@ -2100,11 +2100,7 @@
 
 void MapVote_Spawn()
 {
-	mapvote_ent = spawn();
-	mapvote_ent.classname = "ent_client_mapvote";
-	mapvote_ent.SendEntity = MapVote_SendEntity;
-	setmodel(mapvote_ent, "null");
-	mapvote_ent.effects = EF_NODEPTHTEST;
+	Net_LinkEntity(mapvote_ent = spawn(), FALSE, 0, MapVote_SendEntity);
 }
 
 void MapVote_TouchMask()

Modified: trunk/data/qcsrc/server/miscfunctions.qc
===================================================================
--- trunk/data/qcsrc/server/miscfunctions.qc	2009-01-28 21:02:40 UTC (rev 5690)
+++ trunk/data/qcsrc/server/miscfunctions.qc	2009-01-29 12:12:43 UTC (rev 5691)
@@ -1631,12 +1631,35 @@
 .float nottargeted;
 #define IFTARGETED if(!self.nottargeted && self.targetname != "")
 
-void Net_LinkEntity(entity e)
+void() SUB_Remove;
+void Net_LinkEntityWithSize(entity e, float docull, float dt, vector mi, vector ma, float(entity, float) sendfunc)
 {
-	setmodel(e, "null");
-	e.effects = EF_NODEPTHTEST | EF_LOWPRECISION;
+	if(e.classname == "")
+		e.classname = "net_linked";
+
+	if(e.model == "" || self.modelindex == 0)
+		setmodel(e, "null");
+
+	setsize(e, mi, ma);
+
+	e.SendEntity = sendfunc;
+	e.SendFlags = 0xFFFFFF;
+
+	if(!docull)
+		e.effects |= EF_NODEPTHTEST;
+
+	if(dt)
+	{
+		e.nextthink = time + dt;
+		e.think = SUB_Remove;
+	}
 }
 
+void Net_LinkEntity(entity e, float docull, float dt, float(entity, float) sendfunc)
+{
+	Net_LinkEntityWithSize(e, docull, dt, e.mins, e.maxs, sendfunc);
+}
+
 void adaptor_think2touch()
 {
 	entity o;

Modified: trunk/data/qcsrc/server/mode_onslaught.qc
===================================================================
--- trunk/data/qcsrc/server/mode_onslaught.qc	2009-01-28 21:02:40 UTC (rev 5690)
+++ trunk/data/qcsrc/server/mode_onslaught.qc	2009-01-29 12:12:43 UTC (rev 5691)
@@ -978,6 +978,5 @@
 		objerror("target and target2 must be set\n");
 	self.think = onslaught_link_delayed;
 	self.nextthink = time + 0.1;
-	self.SendEntity = onslaught_link_send;
-	Net_LinkEntity(self);
+	Net_LinkEntity(self, FALSE, 0, onslaught_link_send);
 };

Modified: trunk/data/qcsrc/server/scores.qc
===================================================================
--- trunk/data/qcsrc/server/scores.qc	2009-01-28 21:02:40 UTC (rev 5690)
+++ trunk/data/qcsrc/server/scores.qc	2009-01-29 12:12:43 UTC (rev 5691)
@@ -76,11 +76,9 @@
 	entity ts;
 	ts = spawn();
 	ts.classname = "csqc_score_team";
-	ts.SendEntity = TeamScore_SendEntity;
 	ts.netname = name; // not used yet, FIXME
-	//ts.SendFlags = SENDFLAGS_CREATE; // immediately send, so csqc knows about the team
 	ts.team = t;
-	Net_LinkEntity(ts);
+	Net_LinkEntity(ts, FALSE, 0, TeamScore_SendEntity);
 	teamscorekeepers[t - 1] = ts;
 	++teamscores_entities_count;
 }
@@ -178,9 +176,7 @@
 	{
 		scores_initialized = spawn();
 		scores_initialized.classname = "ent_client_scoreinfo";
-		scores_initialized.SendEntity = ScoreInfo_SendEntity;
-		setmodel(scores_initialized, "null");
-		scores_initialized.effects = EF_NODEPTHTEST;
+		Net_LinkEntity(scores_initialized, FALSE, 0, ScoreInfo_SendEntity);
 	}
 	if(teams >= 1)
 		TeamScore_Spawn(COLOR_TEAM1, "Red");
@@ -280,8 +276,7 @@
 		error("player already has a scorekeeper");
 	sk = spawn();
 	sk.owner = player;
-	sk.SendEntity = PlayerScore_SendEntity;
-	Net_LinkEntity(sk);
+	Net_LinkEntity(sk, FALSE, 0, PlayerScore_SendEntity);
 	player.scorekeeper = sk;
 }
 

Modified: trunk/data/qcsrc/server/tturrets/units/unit_hellion.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/unit_hellion.qc	2009-01-28 21:02:40 UTC (rev 5690)
+++ trunk/data/qcsrc/server/tturrets/units/unit_hellion.qc	2009-01-29 12:12:43 UTC (rev 5691)
@@ -31,7 +31,6 @@
 
     missile = spawn ();
     setorigin(missile, self.tur_shotorg_updated);
-    setmodel (missile, "models/turrets/mlrs_rocket.md3"); // precision set below
     setsize (missile, '-3 -3 -3', '3 3 3'); // give it some size so it can be shot
 
     missile.classname          = "hellion_missile";
@@ -46,7 +45,6 @@
     missile.nextthink          = time + 0.2;
     missile.solid              = SOLID_BBOX;
     missile.movetype           = MOVETYPE_FLYMISSILE;
-    missile.effects            = EF_LOWPRECISION;
     missile.velocity           = (self.tur_shotdir_updated + randomvec() * self.shot_spread) * self.shot_speed; // + ('0 0 1' * self.shot_speed * 0.15);
     missile.angles             = vectoangles(missile.velocity);
     missile.touch              = turret_hellion_missile_explode;
@@ -56,8 +54,7 @@
     missile.tur_aimpos         = randomvec() * 128;
     te_explosion (missile.origin);
 
-	CSQCProjectile(missile, FALSE, PROJECTILE_ROCKET);
-	missile.effects |= EF_NODEPTHTEST; // projectile has a fly sound
+	CSQCProjectile(missile, FALSE, PROJECTILE_ROCKET, FALSE); // no culling, has fly sound
 
     // switch tubes
     self.tur_shotorg_y = self.tur_shotorg_y * -1;

Modified: trunk/data/qcsrc/server/tturrets/units/unit_hk.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/unit_hk.qc	2009-01-28 21:02:40 UTC (rev 5690)
+++ trunk/data/qcsrc/server/tturrets/units/unit_hk.qc	2009-01-29 12:12:43 UTC (rev 5691)
@@ -89,7 +89,6 @@
 
     missile                    = spawn ();
     missile.solid            = SOLID_BBOX;
-    setmodel (missile, "models/turrets/hunter2.md3"); // precision set below
     setsize (missile, '-3 -3 -3', '3 3 3'); // give it some size so it can be shot
     setorigin(missile, self.tur_shotorg_updated);
 
@@ -105,7 +104,6 @@
     missile.event_damage     = turret_hk_missile_damage;
     missile.nextthink        = time + 0.25;
     missile.movetype         = MOVETYPE_BOUNCEMISSILE;
-    missile.effects          = EF_LOWPRECISION;
     missile.velocity         = self.tur_shotdir_updated * (self.shot_speed * 0.75);
     missile.angles           = vectoangles(missile.velocity);
     missile.touch            = turret_hk_missile_explode; //turret_hk_missile_touch;
@@ -115,8 +113,7 @@
     missile.cnt              = time + 30;
     missile.ticrate          = max(cvar("sys_ticrate"),0.05);
 
-	CSQCProjectile(missile, FALSE, PROJECTILE_ROCKET);
-	missile.effects |= EF_NODEPTHTEST; // projectile has a fly sound
+	CSQCProjectile(missile, FALSE, PROJECTILE_ROCKET, FALSE); // no culling, fly sound
 
     te_explosion (missile.origin);
 

Modified: trunk/data/qcsrc/server/tturrets/units/unit_mlrs.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/unit_mlrs.qc	2009-01-28 21:02:40 UTC (rev 5690)
+++ trunk/data/qcsrc/server/tturrets/units/unit_mlrs.qc	2009-01-29 12:12:43 UTC (rev 5691)
@@ -23,7 +23,6 @@
     sound (self, CHAN_WEAPON, "weapons/rocket_fire.wav", VOL_BASE, ATTN_NORM);
 
     missile                    = spawn ();
-    setmodel (missile, "models/turrets/rocket.md3"); // precision set below
     setsize (missile, '-3 -3 -3', '3 3 3'); // give it some size so it can be shot
     setorigin(missile, self.tur_shotorg_updated);
     missile.classname          = "mlrs_missile";
@@ -37,7 +36,6 @@
     missile.nextthink          = time + max(self.tur_impacttime,(self.shot_radius * 2) / self.shot_speed);
     missile.solid              = SOLID_BBOX;
     missile.movetype           = MOVETYPE_FLYMISSILE;
-    missile.effects            = EF_LOWPRECISION;
     missile.velocity           = (self.tur_shotdir_updated + randomvec() * self.shot_spread) * self.shot_speed;
     missile.angles             = vectoangles(missile.velocity);
     missile.touch              = turret_mlrs_rocket_explode;
@@ -45,8 +43,7 @@
     missile.solid              = SOLID_BBOX;
     missile.enemy              = self.enemy;
 
-	CSQCProjectile(missile, TRUE, PROJECTILE_ROCKET);
-	missile.effects |= EF_NODEPTHTEST; // projectile has a fly sound
+	CSQCProjectile(missile, TRUE, PROJECTILE_ROCKET, FALSE); // no cull, fly sound
 
     te_explosion (missile.origin);
 

Modified: trunk/data/qcsrc/server/tturrets/units/unit_walker.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/unit_walker.qc	2009-01-28 21:02:40 UTC (rev 5690)
+++ trunk/data/qcsrc/server/tturrets/units/unit_walker.qc	2009-01-29 12:12:43 UTC (rev 5691)
@@ -310,7 +310,6 @@
     setorigin(rocket, org);
 
     sound (self, CHAN_WEAPON, "weapons/hagar_fire.wav", VOL_BASE, ATTN_NORM);
-    setmodel (rocket, "models/turrets/rocket.md3"); // precision set below
     setsize (rocket, '-3 -3 -3', '3 3 3'); // give it some size so it can be shot
 
     rocket.classname          = "walker_rocket";
@@ -335,7 +334,6 @@
     rocket.nextthink          = time + 0.25;
     rocket.solid              = SOLID_BBOX;
     rocket.movetype           = MOVETYPE_FLYMISSILE;
-    rocket.effects            = EF_LOWPRECISION;
     rocket.velocity           = ((v_forward + v_up * 0.25) +(randomvec() * 0.1))* cvar("g_turrets_unit_walker_std_rocket_speed");
     rocket.angles             = vectoangles(rocket.velocity);
     rocket.touch              = walker_rocket_explode;
@@ -343,8 +341,7 @@
     rocket.solid              = SOLID_BBOX;
     rocket.tur_health         = time + 9;
 
-	CSQCProjectile(rocket, TRUE, PROJECTILE_ROCKET);
-	rocket.effects |= EF_NODEPTHTEST; // projectile has a fly sound
+	CSQCProjectile(rocket, TRUE, PROJECTILE_ROCKET, FALSE); // no cull, fly sound
 
     te_explosion (rocket.origin);
 

Modified: trunk/data/qcsrc/server/w_common.qc
===================================================================
--- trunk/data/qcsrc/server/w_common.qc	2009-01-28 21:02:40 UTC (rev 5690)
+++ trunk/data/qcsrc/server/w_common.qc	2009-01-29 12:12:43 UTC (rev 5691)
@@ -278,8 +278,6 @@
 	proj.angles = vectoangles(proj.velocity);
 	proj.dmg_radius = cvar("g_ballistics_materialconstant") / bulletconstant;
 	// so: bulletconstant = bullet mass / area of bullet circle
-	setmodel(proj, "null");
-	setsize(proj, '0 0 0', '0 0 0');
 	setorigin(proj, start);
 	proj.flags = FL_PROJECTILE;
 
@@ -292,9 +290,9 @@
 	proj.oldvelocity = proj.velocity;
 
 	if(tracereffects & EF_RED)
-		CSQCProjectile(proj, TRUE, PROJECTILE_BULLET_GLOWING);
+		CSQCProjectile(proj, TRUE, PROJECTILE_BULLET_GLOWING, TRUE);
 	else
-		CSQCProjectile(proj, TRUE, PROJECTILE_BULLET);
+		CSQCProjectile(proj, TRUE, PROJECTILE_BULLET, TRUE);
 }
 
 void fireBullet (vector start, vector dir, float spread, float damage, float force, float dtype, float tracer)
@@ -328,12 +326,10 @@
 		e.nextthink = time + vlen(trace_endpos - start) / 6000;
 		e.velocity = dir * 6000;
 		e.angles = vectoangles(e.velocity);
-		setmodel (e, "null"); // precision set below
-		setsize (e, '0 0 0', '0 0 0');
 		setorigin (e, start);
 		e.flags = FL_PROJECTILE;
 
-		CSQCProjectile(e, TRUE, PROJECTILE_BULLET);
+		CSQCProjectile(e, TRUE, PROJECTILE_BULLET, TRUE);
 	}
 
 	if ((trace_fraction != 1.0) && (pointcontents (trace_endpos) != CONTENT_SKY))

Modified: trunk/data/qcsrc/server/w_crylink.qc
===================================================================
--- trunk/data/qcsrc/server/w_crylink.qc	2009-01-28 21:02:40 UTC (rev 5690)
+++ trunk/data/qcsrc/server/w_crylink.qc	2009-01-29 12:12:43 UTC (rev 5691)
@@ -86,8 +86,6 @@
 		proj.projectiledeathtype = WEP_CRYLINK;
 		//proj.gravity = 0.001;
 
-		setmodel (proj, "null"); // precision set below
-		setsize (proj, '0 0 0', '0 0 0');
 		setorigin (proj, w_shotorg);
 
 
@@ -120,7 +118,7 @@
 
 		proj.flags = FL_PROJECTILE;
 
-		CSQCProjectile(proj, TRUE, PROJECTILE_CRYLINK);
+		CSQCProjectile(proj, TRUE, PROJECTILE_CRYLINK, TRUE);
 
 		counter = counter + 1;
 	}
@@ -151,8 +149,6 @@
 		proj.projectiledeathtype = WEP_CRYLINK | HITTYPE_SECONDARY;
 		//proj.gravity = 0.001;
 
-		setmodel (proj, "null"); // precision set below
-		setsize (proj, '0 0 0', '0 0 0');
 		setorigin (proj, w_shotorg);
 
 		proj.velocity = (w_shotdir + (((counter + 0.5) / shots) * 2 - 1) * v_right * cvar("g_balance_crylink_secondary_spread")) * cvar("g_balance_crylink_secondary_speed");
@@ -171,7 +167,7 @@
 
 		proj.flags = FL_PROJECTILE;
 
-		CSQCProjectile(proj, TRUE, PROJECTILE_CRYLINK);
+		CSQCProjectile(proj, TRUE, PROJECTILE_CRYLINK, TRUE);
 
 		counter = counter + 1;
 	}

Modified: trunk/data/qcsrc/server/w_electro.qc
===================================================================
--- trunk/data/qcsrc/server/w_electro.qc	2009-01-28 21:02:40 UTC (rev 5690)
+++ trunk/data/qcsrc/server/w_electro.qc	2009-01-29 12:12:43 UTC (rev 5691)
@@ -96,13 +96,11 @@
 	proj.angles = vectoangles(proj.velocity);
 	proj.touch = W_Plasma_TouchExplode;
 	proj.flags = FL_PROJECTILE;
-	setmodel(proj, "null"); // precision set above
-	setsize(proj, '0 0 0', '0 0 0');
 
 	//sound (proj, CHAN_PAIN, "weapons/electro_fly.wav", VOL_BASE, ATTN_NORM);
 	//sounds bad
 
-	CSQCProjectile(proj, TRUE, PROJECTILE_ELECTRO_BEAM);
+	CSQCProjectile(proj, TRUE, PROJECTILE_ELECTRO_BEAM, TRUE);
 }
 
 void W_Electro_Attack2()
@@ -133,7 +131,6 @@
 	proj.velocity = (w_shotdir + randomvec() * cvar("g_balance_electro_secondary_spread")) * cvar("g_balance_electro_secondary_speed") + v_up * cvar("g_balance_electro_secondary_speed_up");
 	W_SetupProjectileVelocity(proj);
 	proj.touch = W_Plasma_Touch;
-	setmodel(proj, "null"); // precision set above
 	setsize(proj, '0 0 -3', '0 0 -3');
 	proj.takedamage = DAMAGE_YES;
 	proj.damageforcescale = 4;
@@ -141,8 +138,7 @@
 	proj.event_damage = W_Plasma_Damage;
 	proj.flags = FL_PROJECTILE;
 
-	CSQCProjectile(proj, TRUE, PROJECTILE_ELECTRO);
-	proj.effects = EF_NODEPTHTEST;
+	CSQCProjectile(proj, TRUE, PROJECTILE_ELECTRO, FALSE); // no culling, it has sound
 }
 
 void spawnfunc_weapon_electro (void)

Modified: trunk/data/qcsrc/server/w_grenadelauncher.qc
===================================================================
--- trunk/data/qcsrc/server/w_grenadelauncher.qc	2009-01-28 21:02:40 UTC (rev 5690)
+++ trunk/data/qcsrc/server/w_grenadelauncher.qc	2009-01-29 12:12:43 UTC (rev 5691)
@@ -90,8 +90,6 @@
 	gren.movetype = MOVETYPE_BOUNCE;
 	gren.solid = SOLID_BBOX;
 	gren.projectiledeathtype = WEP_GRENADE_LAUNCHER;
-	setmodel(gren, "null"); // precision set above
-	setsize(gren, '0 0 0', '0 0 0');
 	setorigin(gren, w_shotorg);
 
 	gren.nextthink = time + cvar("g_balance_grenadelauncher_primary_lifetime");
@@ -104,7 +102,7 @@
 	gren.angles = vectoangles (gren.velocity);
 	gren.flags = FL_PROJECTILE;
 
-	CSQCProjectile(gren, TRUE, PROJECTILE_GRENADE);	
+	CSQCProjectile(gren, TRUE, PROJECTILE_GRENADE, TRUE);	
 }
 
 void W_Grenade_Attack2 (void)
@@ -126,8 +124,7 @@
 	gren.movetype = MOVETYPE_BOUNCE;
 	gren.solid = SOLID_BBOX;
 	gren.projectiledeathtype = WEP_GRENADE_LAUNCHER | HITTYPE_SECONDARY;
-	setmodel(gren, "null"); // precision set above
-	setsize(gren, '0 0 -3', '0 0 -3');
+	setsize(gren, '0 0 -3', '0 0 -3'); // why, just, why?
 	setorigin(gren, w_shotorg);
 
 	gren.nextthink = time + cvar("g_balance_grenadelauncher_secondary_lifetime");
@@ -144,7 +141,7 @@
 	gren.angles = vectoangles (gren.velocity);
 	gren.flags = FL_PROJECTILE;
 
-	CSQCProjectile(gren, TRUE, PROJECTILE_GRENADE_BOUNCING);	
+	CSQCProjectile(gren, TRUE, PROJECTILE_GRENADE_BOUNCING, TRUE);
 }
 
 void spawnfunc_weapon_grenadelauncher (void)

Modified: trunk/data/qcsrc/server/w_hagar.qc
===================================================================
--- trunk/data/qcsrc/server/w_hagar.qc	2009-01-28 21:02:40 UTC (rev 5690)
+++ trunk/data/qcsrc/server/w_hagar.qc	2009-01-29 12:12:43 UTC (rev 5691)
@@ -66,11 +66,8 @@
 	missile.think = adaptor_think2use;
 	missile.nextthink = time + cvar("g_balance_hagar_primary_lifetime");
 	missile.solid = SOLID_BBOX;
-	missile.scale = 0.4; // BUG: the model is too big
 	missile.projectiledeathtype = WEP_HAGAR;
 	setorigin (missile, w_shotorg);
-	setmodel (missile, "null"); // precision set below
-	setsize (missile, '0 0 0', '0 0 0');
 	//missile.takedamage = DAMAGE_YES;
 	//missile.damageforcescale = 4;
 	//missile.health = 10;
@@ -83,7 +80,7 @@
 	missile.angles = vectoangles (missile.velocity);
 	missile.flags = FL_PROJECTILE;
 
-	CSQCProjectile(missile, TRUE, PROJECTILE_HAGAR);
+	CSQCProjectile(missile, TRUE, PROJECTILE_HAGAR, TRUE);
 }
 
 void W_Hagar_Attack2 (void)
@@ -108,11 +105,8 @@
 	missile.think = adaptor_think2use;
 	missile.nextthink = time + cvar("g_balance_hagar_secondary_lifetime");
 	missile.solid = SOLID_BBOX;
-	missile.scale = 0.4; // BUG: the model is too big
 	missile.projectiledeathtype = WEP_HAGAR | HITTYPE_SECONDARY;
 	setorigin (missile, w_shotorg);
-	setmodel (missile, "null"); // precision set below
-	setsize (missile, '0 0 0', '0 0 0');
 	//missile.takedamage = DAMAGE_YES;
 	//missile.damageforcescale = 4;
 	//missile.health = 10;
@@ -126,7 +120,7 @@
 	missile.angles = vectoangles (missile.velocity);
 	missile.flags = FL_PROJECTILE;
 
-	CSQCProjectile(missile, TRUE, PROJECTILE_HAGAR_BOUNCING);
+	CSQCProjectile(missile, TRUE, PROJECTILE_HAGAR_BOUNCING, TRUE);
 }
 
 void spawnfunc_weapon_hagar (void)

Modified: trunk/data/qcsrc/server/w_hlac.qc
===================================================================
--- trunk/data/qcsrc/server/w_hlac.qc	2009-01-28 21:02:40 UTC (rev 5690)
+++ trunk/data/qcsrc/server/w_hlac.qc	2009-01-29 12:12:43 UTC (rev 5691)
@@ -55,8 +55,6 @@
 	missile.movetype = MOVETYPE_FLY;
 	missile.solid = SOLID_BBOX;
 
-	setmodel (missile, "null"); // precision set below
-	setsize (missile, '0 0 0', '0 0 0');
 	setorigin (missile, w_shotorg);
 
     missile.velocity = (w_shotdir + randomvec() * spread) * cvar("g_balance_hlac_primary_speed");
@@ -72,7 +70,7 @@
 	missile.flags = FL_PROJECTILE;
 	missile.projectiledeathtype = WEP_HLAC;
 
-	CSQCProjectile(missile, TRUE, PROJECTILE_HLAC);
+	CSQCProjectile(missile, TRUE, PROJECTILE_HLAC, TRUE);
 }
 
 void W_HLAC_Attack2f (void)
@@ -100,8 +98,6 @@
 	missile.movetype = MOVETYPE_FLY;
 	missile.solid = SOLID_BBOX;
 
-	setmodel (missile, "null"); // precision set below
-	setsize (missile, '0 0 0', '0 0 0');
 	setorigin (missile, w_shotorg);
 
     missile.velocity = (w_shotdir + randomvec() * spread) * cvar("g_balance_hlac_secondary_speed");
@@ -117,7 +113,7 @@
 	missile.flags = FL_PROJECTILE;
 	missile.projectiledeathtype = WEP_HLAC | HITTYPE_SECONDARY;
 
-	CSQCProjectile(missile, TRUE, PROJECTILE_HLAC);
+	CSQCProjectile(missile, TRUE, PROJECTILE_HLAC, TRUE);
 }
 
 void W_HLAC_Attack2 (void)

Modified: trunk/data/qcsrc/server/w_hook.qc
===================================================================
--- trunk/data/qcsrc/server/w_hook.qc	2009-01-28 21:02:40 UTC (rev 5690)
+++ trunk/data/qcsrc/server/w_hook.qc	2009-01-29 12:12:43 UTC (rev 5691)
@@ -69,8 +69,6 @@
 	gren.movetype = MOVETYPE_TOSS;
 	gren.solid = SOLID_BBOX;
 	gren.projectiledeathtype = WEP_HOOK | HITTYPE_SECONDARY;
-	setmodel(gren, "null"); // precision set above // FIXME replace
-	setsize(gren, '0 0 0', '0 0 0');
 	setorigin(gren, w_shotorg);
 
 	gren.nextthink = time + cvar("g_balance_hook_secondary_lifetime");
@@ -88,7 +86,7 @@
 	gren.angles = '0 0 0';
 	gren.flags = FL_PROJECTILE;
 
-	CSQCProjectile(gren, TRUE, PROJECTILE_HOOKBOMB);
+	CSQCProjectile(gren, TRUE, PROJECTILE_HOOKBOMB, TRUE);
 }
 
 void spawnfunc_weapon_hook (void)

Modified: trunk/data/qcsrc/server/w_laser.qc
===================================================================
--- trunk/data/qcsrc/server/w_laser.qc	2009-01-28 21:02:40 UTC (rev 5690)
+++ trunk/data/qcsrc/server/w_laser.qc	2009-01-29 12:12:43 UTC (rev 5691)
@@ -36,8 +36,6 @@
 	if(issecondary)
 		missile.projectiledeathtype |= HITTYPE_SECONDARY;
 
-	setmodel (missile, "null"); // precision set below
-	setsize (missile, '0 0 0', '0 0 0');
 	setorigin (missile, w_shotorg);
 
 	if (issecondary)
@@ -57,7 +55,7 @@
 
 	missile.flags = FL_PROJECTILE;
 
-	CSQCProjectile(missile, TRUE, PROJECTILE_LASER);
+	CSQCProjectile(missile, TRUE, PROJECTILE_LASER, TRUE);
 }
 
 float w_laser(float req)

Modified: trunk/data/qcsrc/server/w_porto.qc
===================================================================
--- trunk/data/qcsrc/server/w_porto.qc	2009-01-28 21:02:40 UTC (rev 5690)
+++ trunk/data/qcsrc/server/w_porto.qc	2009-01-29 12:12:43 UTC (rev 5691)
@@ -123,7 +123,7 @@
 			trace_plane_normal = norm;
 			W_Porto_Fail(0);
 		}
-		CSQCProjectile(self, TRUE, PROJECTILE_PORTO_BLUE); // change type
+		CSQCProjectile(self, TRUE, PROJECTILE_PORTO_BLUE, TRUE); // change type
 	}
 	else
 	{
@@ -170,8 +170,6 @@
 	gren.solid = SOLID_BBOX;
 	gren.effects = EF_RED;
 	gren.scale = 4;
-	setmodel(gren, "null"); // precision set above
-	setsize(gren, '0 0 0', '0 0 0');
 	setorigin(gren, w_shotorg);
 
 	gren.nextthink = time + cvar("g_balance_porto_primary_lifetime");
@@ -193,7 +191,7 @@
 
 	gren.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_PLAYERCLIP;
 
-	CSQCProjectile(gren, TRUE, PROJECTILE_PORTO_RED);
+	CSQCProjectile(gren, TRUE, PROJECTILE_PORTO_RED, TRUE);
 }
 
 void spawnfunc_weapon_porto (void)

Modified: trunk/data/qcsrc/server/w_rocketlauncher.qc
===================================================================
--- trunk/data/qcsrc/server/w_rocketlauncher.qc	2009-01-28 21:02:40 UTC (rev 5690)
+++ trunk/data/qcsrc/server/w_rocketlauncher.qc	2009-01-29 12:12:43 UTC (rev 5691)
@@ -221,7 +221,6 @@
 	missile.movetype = MOVETYPE_FLY;
 	missile.solid = SOLID_BBOX;
 	missile.projectiledeathtype = WEP_ROCKET_LAUNCHER;
-	setmodel (missile, "null"); // precision set below
 	setsize (missile, '-3 -3 -3', '3 3 3'); // give it some size so it can be shot
 
 	setorigin (missile, w_shotorg - v_forward * 3); // move it back so it hits the wall at the right point
@@ -238,8 +237,7 @@
 	missile.cnt = time + cvar("g_balance_rocketlauncher_lifetime");
 	missile.flags = FL_PROJECTILE;
 
-	CSQCProjectile(missile, cvar("g_balance_rocketlauncher_speedaccel") == 0 && !g_laserguided_missile, PROJECTILE_ROCKET);
-	missile.effects |= EF_NODEPTHTEST; // because of fly sound
+	CSQCProjectile(missile, cvar("g_balance_rocketlauncher_speedaccel") == 0 && !g_laserguided_missile, PROJECTILE_ROCKET, FALSE); // because of fly sound
 
 	// muzzle flash for 1st person view
 	flash = spawn ();

Modified: trunk/data/qcsrc/server/w_seeker.qc
===================================================================
--- trunk/data/qcsrc/server/w_seeker.qc	2009-01-28 21:02:40 UTC (rev 5690)
+++ trunk/data/qcsrc/server/w_seeker.qc	2009-01-29 12:12:43 UTC (rev 5691)
@@ -189,7 +189,6 @@
 	missile.projectiledeathtype = WEP_SEEKER;
 
 	setorigin (missile, w_shotorg);
-	setmodel  (missile, "null");
 	setsize (missile, '-2 -2 -2', '2 2 2');
 
 
@@ -203,7 +202,7 @@
 	missile.switchweapon = vlen(missile.velocity);
 	missile.angles = vectoangles (missile.velocity);
 
-	CSQCProjectile(missile, FALSE, PROJECTILE_SEEKER);
+	CSQCProjectile(missile, FALSE, PROJECTILE_SEEKER, TRUE);
 }
 
 void Seeker_Vollycontroler_Think()
@@ -330,9 +329,7 @@
 	missile.event_damage    = Seeker_Tag_Explode;
 	missile.health          = 5;
 
-	setmodel (missile, "null");
 	setorigin (missile, w_shotorg);
-	setsize (missile, '0 0 0', '0 0 0');
 
 	missile.flags       = FL_PROJECTILE;
 
@@ -341,8 +338,7 @@
 	W_SetupProjectileVelocity(missile);
 	missile.angles = vectoangles (missile.velocity);
 
-	CSQCProjectile(missile, TRUE, PROJECTILE_TAG);
-	missile.effects = EF_NODEPTHTEST;
+	CSQCProjectile(missile, TRUE, PROJECTILE_TAG, FALSE); // has sound
 }
 
 
@@ -405,8 +401,6 @@
 	missile.scale = 0.4; // BUG: the model is too big
 	missile.projectiledeathtype = WEP_SEEKER;
 	setorigin (missile, w_shotorg);
-	setmodel (missile, "null"); // precision set below
-	setsize (missile, '0 0 0', '0 0 0');
 	missile.projectiledeathtype = WEP_SEEKER | HITTYPE_SECONDARY;
 
 	missile.movetype = MOVETYPE_FLY;
@@ -418,7 +412,7 @@
 	missile.angles = vectoangles (missile.velocity);
 	missile.flags = FL_PROJECTILE;
 
-	CSQCProjectile(missile, TRUE, PROJECTILE_FLAC);
+	CSQCProjectile(missile, TRUE, PROJECTILE_FLAC, TRUE);
 }
 
 void spawnfunc_weapon_seeker (void)

Modified: trunk/data/qcsrc/server/waypointsprites.qc
===================================================================
--- trunk/data/qcsrc/server/waypointsprites.qc	2009-01-28 21:02:40 UTC (rev 5690)
+++ trunk/data/qcsrc/server/waypointsprites.qc	2009-01-29 12:12:43 UTC (rev 5691)
@@ -256,11 +256,10 @@
 	wp.nextthink = time;
 	wp.effects = EF_NODEPTHTEST | EF_LOWPRECISION;
 	wp.model1 = spr;
-	setmodel(wp, "null");
-	wp.SendEntity = WaypointSprite_SendEntity;
 	wp.customizeentityforclient = WaypointSprite_Customize;
 	wp.waypointsprite_visible_for_player = WaypointSprite_visible_for_player;
 	wp.reset2 = WaypointSprite_Reset;
+	Net_LinkEntity(wp, TRUE, 0, WaypointSprite_SendEntity);
 	return wp;
 }
 




More information about the nexuiz-commits mailing list