| 3251 | //---------------------------------------------------------------------------- |
| 3252 | |
| 3253 | void 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 | |
| 3289 | void ShapeBase::submitLights( LightManager *lm, bool staticLighting ) |
| 3290 | { |
nothing calls this directly
no test coverage detected