r5723 - in trunk/data: . qcsrc/client

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Tue Feb 3 01:46:34 EST 2009


Author: div0
Date: 2009-02-03 01:46:34 -0500 (Tue, 03 Feb 2009)
New Revision: 5723

Modified:
   trunk/data/defaultNexuiz.cfg
   trunk/data/qcsrc/client/casings.qc
   trunk/data/qcsrc/client/gibs.qc
   trunk/data/qcsrc/client/miscfunctions.qc
   trunk/data/qcsrc/client/prandom.qc
   trunk/data/qcsrc/client/prandom.qh
Log:
1. bring prandom back, this time maybe in a working manner (if it does work, will later change it to distribute a random seed to clients)
2. cl_gibs_velocity_* cvars


Modified: trunk/data/defaultNexuiz.cfg
===================================================================
--- trunk/data/defaultNexuiz.cfg	2009-02-02 15:46:19 UTC (rev 5722)
+++ trunk/data/defaultNexuiz.cfg	2009-02-03 06:46:34 UTC (rev 5723)
@@ -683,6 +683,9 @@
 seta cl_nogibs 0
 seta cl_gibs_damageforcescale 3.5 "force to push around gibs"
 seta cl_gibs_lifetime 14 "average lifetime of gibs"
+seta cl_gibs_velocity_scale 1 "gib throw velocity force scale"
+seta cl_gibs_velocity_random 1 "gib throw velocity randomness scale"
+seta cl_gibs_velocity_up 0 "extra z velocity for gibs"
 cl_stainmaps 0
 cl_particles_smoke 1
 r_glsl 1

Modified: trunk/data/qcsrc/client/casings.qc
===================================================================
--- trunk/data/qcsrc/client/casings.qc	2009-02-02 15:46:19 UTC (rev 5722)
+++ trunk/data/qcsrc/client/casings.qc	2009-02-03 06:46:34 UTC (rev 5723)
@@ -78,9 +78,9 @@
 
 	casing.draw = Casing_Draw;
 	casing.move_origin = casing.origin;
-	casing.move_velocity = casing.velocity + 2 * randomvec();
+	casing.move_velocity = casing.velocity + 2 * prandomvec();
 	casing.move_angles = casing.angles;
-	casing.move_avelocity = '0 250 0' + 100 * randomvec();
+	casing.move_avelocity = '0 250 0' + 100 * prandomvec();
 	casing.move_movetype = MOVETYPE_BOUNCE;
 	casing.move_touch = Casing_Touch;
 	casing.move_time = time;

Modified: trunk/data/qcsrc/client/gibs.qc
===================================================================
--- trunk/data/qcsrc/client/gibs.qc	2009-02-02 15:46:19 UTC (rev 5722)
+++ trunk/data/qcsrc/client/gibs.qc	2009-02-03 06:46:34 UTC (rev 5723)
@@ -41,7 +41,7 @@
 		R_AddEntity(self);
 }
 
-void TossGib (string mdlname, vector org, vector v, float destroyontouch)
+void TossGib (string mdlname, vector org, vector vconst, vector vrand, float destroyontouch)
 {
 	entity gib;
 
@@ -56,7 +56,7 @@
 	setmodel (gib, mdlname); // precision set above
 
 	setsize (gib, '-8 -8 -8', '8 8 8');
-
+                                          
 	gib.draw = Gib_Draw;
 	if(destroyontouch)
 		gib.move_touch = Gib_Touch;
@@ -64,12 +64,12 @@
 		gib.move_touch = SUB_RemoveOnNoImpact;
 
 	gib.move_origin = gib.origin = org;
-	gib.move_velocity = v + randomvec();
-	gib.move_avelocity = randomvec() * vlen(gib.move_velocity);
+	gib.move_velocity = vconst * cvar_or("cl_gibs_velocity_scale", 1) + vrand * cvar_or("cl_gibs_velocity_random", 1) + '0 0 1' * cvar("cl_gibs_velocity_up");
+	gib.move_avelocity = prandomvec() * vlen(gib.move_velocity);
 	gib.move_time = time;
-	gib.damageforcescale = cvar("cl_gibs_damageforcescale");
+	gib.damageforcescale = cvar_or("cl_gibs_damageforcescale", 3.5);
 
-	gib.nextthink = time + cvar("cl_gibs_lifetime") * (1 + prandom() * 0.15);
+	gib.nextthink = time + cvar_or("cl_gibs_lifetime", 14) * (1 + prandom() * 0.15);
 }
 
 void Ent_GibSplash()
@@ -108,37 +108,37 @@
 			sound (self, CHAN_PAIN, "misc/gib.wav", VOL_BASE, ATTN_NORM);
 
 			if(prandom() < amount)
-				TossGib("models/gibs/eye.md3", org, vel + randomvec() * 150, 0);
+				TossGib("models/gibs/eye.md3", org, vel, prandomvec() * 150, 0);
 			te_bloodshower(org + mi, org + ma, 1200, 1000 * amount);
 			if(prandom() < amount)
-				TossGib("models/gibs/bloodyskull.md3", org, vel + randomvec() * 100, 0);
+				TossGib("models/gibs/bloodyskull.md3", org, vel, prandomvec() * 100, 0);
 
 			for(c = 0; c < amount; ++c)
 			{
 				randomvalue = amount - c;
 					
 				if(prandom() < randomvalue)
-					TossGib ("models/gibs/arm.md3", org, vel + randomvec() * (prandom() * 120 + 90),0);
+					TossGib ("models/gibs/arm.md3", org, vel, prandomvec() * (prandom() * 120 + 90),0);
 				if(prandom() < randomvalue)
-					TossGib ("models/gibs/arm.md3", org, vel + randomvec() * (prandom() * 120 + 90),0);
+					TossGib ("models/gibs/arm.md3", org, vel, prandomvec() * (prandom() * 120 + 90),0);
 				if(prandom() < randomvalue)
-					TossGib ("models/gibs/chest.md3", org + '0 0 -12', vel + randomvec() * (prandom() * 120 + 80),0);
+					TossGib ("models/gibs/chest.md3", org + '0 0 -12', vel, prandomvec() * (prandom() * 120 + 80),0);
 				if(prandom() < randomvalue)
-					TossGib ("models/gibs/smallchest.md3", org, vel + randomvec() * (prandom() * 120 + 80),0);
+					TossGib ("models/gibs/smallchest.md3", org, vel, prandomvec() * (prandom() * 120 + 80),0);
 				if(prandom() < randomvalue)
-					TossGib ("models/gibs/leg1.md3", org + '0 0 -5', vel + randomvec() * (prandom() * 120 + 85),0);
+					TossGib ("models/gibs/leg1.md3", org + '0 0 -5', vel, prandomvec() * (prandom() * 120 + 85),0);
 				if(prandom() < randomvalue)
-					TossGib ("models/gibs/leg2.md3", org + '0 0 -9', vel + randomvec() * (prandom() * 120 + 85),0);
+					TossGib ("models/gibs/leg2.md3", org + '0 0 -9', vel, prandomvec() * (prandom() * 120 + 85),0);
 
 				// these splat on impact
 				if(prandom() < randomvalue)
-					TossGib ("models/gibs/chunk.mdl", org, vel + randomvec() * 450,1);
+					TossGib ("models/gibs/chunk.mdl", org, vel, prandomvec() * 450,1);
 				if(prandom() < randomvalue)
-					TossGib ("models/gibs/chunk.mdl", org, vel + randomvec() * 450,1);
+					TossGib ("models/gibs/chunk.mdl", org, vel, prandomvec() * 450,1);
 				if(prandom() < randomvalue)
-					TossGib ("models/gibs/chunk.mdl", org, vel + randomvec() * 450,1);
+					TossGib ("models/gibs/chunk.mdl", org, vel, prandomvec() * 450,1);
 				if(prandom() < randomvalue)
-					TossGib ("models/gibs/chunk.mdl", org, vel + randomvec() * 450,1);
+					TossGib ("models/gibs/chunk.mdl", org, vel, prandomvec() * 450,1);
 			}
 			break;
 		case 0x02:
@@ -146,7 +146,7 @@
 			break;
 		case 0x03:
 			if(prandom() < amount)
-				TossGib ("models/gibs/chunk.mdl", org, vel, 1);
+				TossGib ("models/gibs/chunk.mdl", org, vel, prandomvec() * (prandom() * 30 + 20), 1); // TODO maybe adjust to more randomization?
 			break;
 		case 0x81:
 			pointparticles(particleeffectnum("damage_dissolve"), org, vel, amount);

Modified: trunk/data/qcsrc/client/miscfunctions.qc
===================================================================
--- trunk/data/qcsrc/client/miscfunctions.qc	2009-02-02 15:46:19 UTC (rev 5722)
+++ trunk/data/qcsrc/client/miscfunctions.qc	2009-02-03 06:46:34 UTC (rev 5723)
@@ -385,3 +385,13 @@
 
 	return s2;
 }
+
+float cvar_or(string cvar, float v)
+{
+	string s;
+	s = cvar_string(cvar);
+	if(s == "")
+		return v;
+	else
+		return stof(s);
+}

Modified: trunk/data/qcsrc/client/prandom.qc
===================================================================
--- trunk/data/qcsrc/client/prandom.qc	2009-02-02 15:46:19 UTC (rev 5722)
+++ trunk/data/qcsrc/client/prandom.qc	2009-02-03 06:46:34 UTC (rev 5723)
@@ -1,11 +1,30 @@
 // prandom - PREDICTABLE random number generator (not seeded yet)
 
-//float prandom_seed;
+float prandom_seed;
 float prandom()
 {
-	return random();
-//	float c;
-//	c = crc16(FALSE, strcat(ftos(prandom_seed), ftos(prandom_seed + 3.1415926535)));
-//	prandom_seed = c;
-//	return c / 65536; // in [0..1[
+	float c;
+	c = crc16(FALSE, strcat(ftos(prandom_seed), ftos(prandom_seed + 3.1415926535)));
+	prandom_seed = c;
+	return c / 65536; // in [0..1[
 }
+
+vector prandomvec()
+{
+	vector v;
+
+	do
+	{
+		v_x = prandom();
+		v_y = prandom();
+		v_z = prandom();
+	}
+	while(v * v > 1);
+
+	return v;
+}
+
+void psrandom(float seed)
+{
+	prandom_seed = seed;
+}

Modified: trunk/data/qcsrc/client/prandom.qh
===================================================================
--- trunk/data/qcsrc/client/prandom.qh	2009-02-02 15:46:19 UTC (rev 5722)
+++ trunk/data/qcsrc/client/prandom.qh	2009-02-03 06:46:34 UTC (rev 5723)
@@ -1,2 +1,5 @@
 // prandom - PREDICTABLE random number generator
 float prandom();
+vector prandomvec();
+
+void psrandom(float seed);




More information about the nexuiz-commits mailing list