| 3215 | //---------------------------------------------------------------------------- |
| 3216 | |
| 3217 | void 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 | |
| 3253 | void ShapeBase::submitLights( LightManager *lm, bool staticLighting ) |
| 3254 | { |
nothing calls this directly
no test coverage detected