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