---------------------------------------------------------------------------- Explode ----------------------------------------------------------------------------
| 1231 | // Explode |
| 1232 | //---------------------------------------------------------------------------- |
| 1233 | bool 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 |
nothing calls this directly
no test coverage detected