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

Method startImageEmitter

Engine/source/T3D/shapeImage.cpp:3217–3251  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3215//----------------------------------------------------------------------------
3216
3217void ShapeBase::startImageEmitter(MountedImage& image,ShapeBaseImageData::StateData& state)
3218{
3219 MountedImage::ImageEmitter* bem = 0;
3220 MountedImage::ImageEmitter* em = image.emitter;
3221 MountedImage::ImageEmitter* ee = &image.emitter[MaxImageEmitters];
3222
3223 U32 imageShapeIndex = getImageShapeIndex(image);
3224
3225 // If we are already emitting the same particles from the same
3226 // node, then simply extend the time. Otherwise, find an empty
3227 // emitter slot, or grab the one with the least amount of time left.
3228 for (; em != ee; em++) {
3229 if (bool(em->emitter)) {
3230 if (state.emitter == em->emitter->getDataBlock() && state.emitterNode[imageShapeIndex] == em->node) {
3231 if (state.emitterTime > em->time)
3232 em->time = state.emitterTime;
3233 return;
3234 }
3235 if (!bem || (bool(bem->emitter) && bem->time > em->time))
3236 bem = em;
3237 }
3238 else
3239 bem = em;
3240 }
3241
3242 bem->time = state.emitterTime;
3243 bem->node = state.emitterNode[imageShapeIndex];
3244 bem->emitter = new ParticleEmitter;
3245 bem->emitter->onNewDataBlock(state.emitter,false);
3246 if( !bem->emitter->registerObject() )
3247 {
3248 bem->emitter.getPointer()->destroySelf();
3249 bem->emitter = NULL;
3250 }
3251}
3252
3253void ShapeBase::submitLights( LightManager *lm, bool staticLighting )
3254{

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