/**
  * plays an effect in the world
  *
  * @param id
  * @param effectName
  * @param location
  * @param endLocation
  * @param rotation
  * @param endRotation
  * @param time
  */
 public void playEffect(
     long id,
     String effectName,
     Vector3f location,
     Vector3f endLocation,
     Quaternion rotation,
     Quaternion endRotation,
     float time) {
   if (liveEmitters.containsKey(id)) {
     Logger.getLogger(ClientEffectsManager.class.getName())
         .log(Level.WARNING, "Trying to add effect with existing id");
     return;
   }
   Node effect = getEffect(effectName);
   EmitterData data =
       new EmitterData(effect, id, effectName, location, endLocation, rotation, endRotation, time);
   effect.setLocalTranslation(location);
   effect.setLocalRotation(rotation);
   data.curTime = 0;
   data.time = time;
   List<Spatial> children = effect.getChildren();
   for (Iterator<Spatial> it = children.iterator(); it.hasNext(); ) {
     Spatial spat = it.next();
     if (spat instanceof ParticleEmitter) {
       ParticleEmitter emitter = (ParticleEmitter) spat;
       emitter.emitAllParticles();
     } else if (spat instanceof AudioNode) {
       AudioNode audioNode = (AudioNode) spat;
       //                audioNode.setStatus(AudioNode.Status.Playing);
       audioRenderer.playSource(audioNode);
     }
   }
   worldManager.getWorldRoot().attachChild(effect);
   if (id == -1) {
     putToNew(data);
   } else {
     data.id = id;
     liveEmitters.put(id, data);
   }
 }