| 279 | } |
| 280 | |
| 281 | void CFxScheduler::AddLoopedEffects() |
| 282 | { |
| 283 | int i; |
| 284 | |
| 285 | for (i=0;i<MAX_LOOPED_FX;i++) |
| 286 | { |
| 287 | if (mLoopedEffectArray[i].mId && mLoopedEffectArray[i].mNextTime < theFxHelper.mTime ) |
| 288 | { |
| 289 | const int entNum = ( mLoopedEffectArray[i].mBoltInfo >> ENTITY_SHIFT ) & ENTITY_AND; |
| 290 | if ( cg_entities[entNum].gent->inuse ) |
| 291 | {// only play the looped effect when the ent is still inUse.... |
| 292 | PlayEffect( mLoopedEffectArray[i].mId, cg_entities[entNum].lerpOrigin, 0, mLoopedEffectArray[i].mBoltInfo, -1, mLoopedEffectArray[i].mPortalEffect, false, mLoopedEffectArray[i].mIsRelative ); //very important to send FALSE looptime to not recursively add me! |
| 293 | mLoopedEffectArray[i].mNextTime = theFxHelper.mTime + mEffectTemplates[mLoopedEffectArray[i].mId].mRepeatDelay; |
| 294 | } |
| 295 | else |
| 296 | { |
| 297 | theFxHelper.Print( "CFxScheduler::AddLoopedEffects- entity was removed without stopping any looping fx it owned." ); |
| 298 | memset( &mLoopedEffectArray[i], 0, sizeof(mLoopedEffectArray[i]) ); |
| 299 | continue; |
| 300 | } |
| 301 | if ( mLoopedEffectArray[i].mLoopStopTime && mLoopedEffectArray[i].mLoopStopTime < theFxHelper.mTime ) //time's up |
| 302 | {//kill this entry |
| 303 | memset( &mLoopedEffectArray[i], 0, sizeof(mLoopedEffectArray[i]) ); |
| 304 | } |
| 305 | } |
| 306 | } |
| 307 | |
| 308 | } |
| 309 | |
| 310 | //----------------------------------------------------------- |
| 311 | void SEffectTemplate::operator=(const SEffectTemplate &that) |