/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.jme3.cinematic.events; import com.jme3.animation.LoopMode; import com.jme3.app.Application; import com.jme3.cinematic.Cinematic; import com.jme3.export.InputCapsule; import com.jme3.export.JmeExporter; import com.jme3.export.JmeImporter; import com.jme3.export.OutputCapsule; import com.jme3.math.Quaternion; import com.jme3.scene.Spatial; import com.jme3.util.TempVars; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author Nehon * @deprecated use spatial animation instead. */ @Deprecated public class RotationTrack extends AbstractCinematicEvent { private static final Logger log = Logger.getLogger(RotationTrack.class.getName()); private Quaternion startRotation = new Quaternion(); private Quaternion endRotation = new Quaternion(); private Spatial spatial; private String spatialName = ""; private float value = 0; @Override public void initEvent(Application app, Cinematic cinematic) { super.initEvent(app, cinematic); if (spatial == null) { spatial = cinematic.getScene().getChild(spatialName); if (spatial == null) { } else { log.log(Level.WARNING, "spatial {0} not found in the scene", spatialName); } } } public RotationTrack() { } public RotationTrack(Spatial spatial, Quaternion endRotation) { this.endRotation.set(endRotation); this.spatial = spatial; spatialName = spatial.getName(); } public RotationTrack(Spatial spatial, Quaternion endRotation, float initialDuration, LoopMode loopMode) { super(initialDuration, loopMode); this.endRotation.set(endRotation); this.spatial = spatial; spatialName = spatial.getName(); } public RotationTrack(Spatial spatial, Quaternion endRotation, LoopMode loopMode) { super(loopMode); this.endRotation.set(endRotation); this.spatial = spatial; spatialName = spatial.getName(); } public RotationTrack(Spatial spatial, Quaternion endRotation, float initialDuration) { super(initialDuration); this.endRotation.set(endRotation); this.spatial = spatial; spatialName = spatial.getName(); } @Override public void onPlay() { if (playState != playState.Paused) { startRotation.set(spatial.getWorldRotation()); } if (initialDuration == 0 && spatial != null) { spatial.setLocalRotation(endRotation); stop(); } } @Override public void onUpdate(float tpf) { if (spatial != null) { value = Math.min(time / initialDuration, 1.0f); TempVars vars = TempVars.get(); Quaternion q = vars.quat1; q.set(startRotation).slerp(endRotation, value); spatial.setLocalRotation(q); vars.release(); } } @Override public void onStop() { value = 0; } @Override public void onPause() { } @Override public void write(JmeExporter ex) throws IOException { super.write(ex); OutputCapsule oc = ex.getCapsule(this); oc.write(spatialName, "spatialName", ""); oc.write(endRotation, "endRotation", null); } @Override public void read(JmeImporter im) throws IOException { super.read(im); InputCapsule ic = im.getCapsule(this); spatialName = ic.readString("spatialName", ""); endRotation = (Quaternion) ic.readSavable("endRotation", null); } }