diff options
Diffstat (limited to 'src/cgame/cg_particles.c')
-rw-r--r-- | src/cgame/cg_particles.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/cgame/cg_particles.c b/src/cgame/cg_particles.c index 1e9ac1fe..a96ec8db 100644 --- a/src/cgame/cg_particles.c +++ b/src/cgame/cg_particles.c @@ -562,10 +562,20 @@ static qboolean CG_ParseParticle( baseParticle_t *bp, char **text_p ) if( !token ) break; - CG_ParseValueAndVariance( token, &number, &randFrac ); + if( !Q_stricmp( token, "cull" ) ) + { + bp->bounceCull = qtrue; + + bp->bounceFrac = -1.0f; + bp->bounceFracRandFrac = 0.0f; + } + else + { + CG_ParseValueAndVariance( token, &number, &randFrac ); - bp->bounceFrac = number; - bp->bounceFracRandFrac = randFrac; + bp->bounceFrac = number; + bp->bounceFracRandFrac = randFrac; + } continue; } @@ -1183,7 +1193,7 @@ static qboolean CG_ParseParticleFile( const char *fileName ) int i; int len; char *token; - char text[ 20000 ]; + char text[ 32000 ]; char psName[ MAX_QPATH ]; qboolean psNameSet = qfalse; fileHandle_t f; @@ -1704,7 +1714,7 @@ static void CG_EvaluateParticlePhysics( particle_t *p ) //remove particles that get into a CONTENTS_NODROP brush if( ( trap_CM_PointContents( trace.endpos, 0 ) & CONTENTS_NODROP ) || - ( bp->cullOnStartSolid && trace.startsolid ) ) + ( bp->cullOnStartSolid && trace.startsolid ) || bp->bounceCull ) { if( cg_debugParticles.integer >= 1 ) CG_Printf( "Particle in CONTENTS_NODROP or trace.startsolid\n" ); |