Browse Source

particle emission safeties
both for player specifically, and emission in general

AzaezelX 3 years ago
parent
commit
77ef842670
2 changed files with 3 additions and 1 deletions
  1. 1 0
      Engine/source/T3D/fx/particleEmitter.cpp
  2. 2 1
      Engine/source/T3D/player.cpp

+ 1 - 0
Engine/source/T3D/fx/particleEmitter.cpp

@@ -787,6 +787,7 @@ void ParticleEmitterData::allocPrimBuffer( S32 overrideSize )
 {
 {
    // calculate particle list size
    // calculate particle list size
    AssertFatal(particleDataBlocks.size() > 0, "Error, no particles found." );
    AssertFatal(particleDataBlocks.size() > 0, "Error, no particles found." );
+   if (particleDataBlocks.empty()) return;
    U32 maxPartLife = particleDataBlocks[0]->lifetimeMS + particleDataBlocks[0]->lifetimeVarianceMS;
    U32 maxPartLife = particleDataBlocks[0]->lifetimeMS + particleDataBlocks[0]->lifetimeVarianceMS;
    for (S32 i = 1; i < particleDataBlocks.size(); i++)
    for (S32 i = 1; i < particleDataBlocks.size(); i++)
    {
    {

+ 2 - 1
Engine/source/T3D/player.cpp

@@ -3954,7 +3954,8 @@ void Player::updateActionThread()
             // Emit footpuffs.
             // Emit footpuffs.
 
 
             if (!footfallDustOverride && rInfo.t <= 0.5f && mWaterCoverage == 0.0f
             if (!footfallDustOverride && rInfo.t <= 0.5f && mWaterCoverage == 0.0f
-                                         && material && material->mShowDust )
+                                         && material && material->mShowDust
+                                         && mDataBlock->footPuffEmitter != nullptr)
             {
             {
                // New emitter every time for visibility reasons
                // New emitter every time for visibility reasons
                ParticleEmitter * emitter = new ParticleEmitter;
                ParticleEmitter * emitter = new ParticleEmitter;