MCPcopy Create free account
hub / github.com/TorqueGameEngines/Torque3D / startImageEmitter

Method startImageEmitter

Engine/source/T3D/shapeImage.cpp:3253–3287  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3251//----------------------------------------------------------------------------
3252
3253void ShapeBase::startImageEmitter(MountedImage& image,ShapeBaseImageData::StateData& state)
3254{
3255 MountedImage::ImageEmitter* bem = 0;
3256 MountedImage::ImageEmitter* em = image.emitter;
3257 MountedImage::ImageEmitter* ee = &image.emitter[MaxImageEmitters];
3258
3259 U32 imageShapeIndex = getImageShapeIndex(image);
3260
3261 // If we are already emitting the same particles from the same
3262 // node, then simply extend the time. Otherwise, find an empty
3263 // emitter slot, or grab the one with the least amount of time left.
3264 for (; em != ee; em++) {
3265 if (bool(em->emitter)) {
3266 if (state.emitter == em->emitter->getDataBlock() && state.emitterNode[imageShapeIndex] == em->node) {
3267 if (state.emitterTime > em->time)
3268 em->time = state.emitterTime;
3269 return;
3270 }
3271 if (!bem || (bool(bem->emitter) && bem->time > em->time))
3272 bem = em;
3273 }
3274 else
3275 bem = em;
3276 }
3277
3278 bem->time = state.emitterTime;
3279 bem->node = state.emitterNode[imageShapeIndex];
3280 bem->emitter = new ParticleEmitter;
3281 bem->emitter->onNewDataBlock(state.emitter,false);
3282 if( !bem->emitter->registerObject() )
3283 {
3284 bem->emitter.getPointer()->destroySelf();
3285 bem->emitter = NULL;
3286 }
3287}
3288
3289void ShapeBase::submitLights( LightManager *lm, bool staticLighting )
3290{

Callers

nothing calls this directly

Calls 5

getDataBlockMethod · 0.45
onNewDataBlockMethod · 0.45
registerObjectMethod · 0.45
destroySelfMethod · 0.45
getPointerMethod · 0.45

Tested by

no test coverage detected