MCPcopy Create free account
hub / github.com/GarageGames/Torque3D / explode

Method explode

Engine/source/T3D/fx/explosion.cpp:1233–1287  ·  view source on GitHub ↗

---------------------------------------------------------------------------- Explode ----------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

1231// Explode
1232//----------------------------------------------------------------------------
1233bool Explosion::explode()
1234{
1235 mActive = true;
1236
1237 GameConnection* conn = GameConnection::getConnectionToServer();
1238 if(!conn)
1239 return false;
1240
1241 launchDebris( mInitialNormal );
1242 spawnSubExplosions();
1243
1244 if (bool(mDataBlock->explosionShape) && mDataBlock->explosionAnimation != -1) {
1245 mExplosionInstance = new TSShapeInstance(mDataBlock->explosionShape, true);
1246
1247 mExplosionThread = mExplosionInstance->addThread();
1248 mExplosionInstance->setSequence(mExplosionThread, mDataBlock->explosionAnimation, 0);
1249 mExplosionInstance->setTimeScale(mExplosionThread, mDataBlock->playSpeed);
1250
1251 mCurrMS = 0;
1252 mEndingMS = U32(mExplosionInstance->getScaledDuration(mExplosionThread) * 1000.0f);
1253
1254 mObjScale.convolve(mDataBlock->explosionScale);
1255 mObjBox = mDataBlock->explosionShape->bounds;
1256 resetWorldBox();
1257 }
1258
1259 if (mDataBlock->soundProfile)
1260 SFX->playOnce( mDataBlock->soundProfile, &getTransform() );
1261
1262 if (mDataBlock->particleEmitter) {
1263 mMainEmitter = new ParticleEmitter;
1264 mMainEmitter->setDataBlock(mDataBlock->particleEmitter);
1265 mMainEmitter->registerObject();
1266
1267 mMainEmitter->emitParticles(getPosition(), mInitialNormal, mDataBlock->particleRadius,
1268 Point3F::Zero, U32(mDataBlock->particleDensity * mFade));
1269 }
1270
1271 for( S32 i=0; i<ExplosionData::EC_NUM_EMITTERS; i++ )
1272 {
1273 if( mDataBlock->emitterList[i] != NULL )
1274 {
1275 ParticleEmitter * pEmitter = new ParticleEmitter;
1276 pEmitter->setDataBlock( mDataBlock->emitterList[i] );
1277 if( !pEmitter->registerObject() )
1278 {
1279 Con::warnf( ConsoleLogEntry::General, "Could not register emitter for particle of class: %s", mDataBlock->getName() );
1280 SAFE_DELETE(pEmitter);
1281 }
1282 mEmitterList[i] = pEmitter;
1283 }
1284 }
1285
1286 return true;
1287}
1288

Callers

nothing calls this directly

Calls 12

warnfFunction · 0.85
getScaledDurationMethod · 0.80
setDataBlockMethod · 0.80
U32Enum · 0.50
addThreadMethod · 0.45
setSequenceMethod · 0.45
setTimeScaleMethod · 0.45
convolveMethod · 0.45
playOnceMethod · 0.45
registerObjectMethod · 0.45
emitParticlesMethod · 0.45
getNameMethod · 0.45

Tested by

no test coverage detected