/* * 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.FastMath; import com.jme3.math.Vector3f; import com.jme3.scene.Spatial; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author Nehon * @deprecated use spatial animation instead. */ @Deprecated public class ScaleTrack extends AbstractCinematicEvent { private static final Logger log = Logger.getLogger(RotationTrack.class.getName()); private Vector3f startScale; private Vector3f endScale; 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 ScaleTrack() { } public ScaleTrack(Spatial spatial, Vector3f endScale) { this.endScale = endScale; this.spatial = spatial; spatialName = spatial.getName(); } public ScaleTrack(Spatial spatial, Vector3f endScale, float initialDuration, LoopMode loopMode) { super(initialDuration, loopMode); this.endScale = endScale; this.spatial = spatial; spatialName = spatial.getName(); } public ScaleTrack(Spatial spatial, Vector3f endScale, LoopMode loopMode) { super(loopMode); this.endScale = endScale; this.spatial = spatial; spatialName = spatial.getName(); } public ScaleTrack(Spatial spatial, Vector3f endScale, float initialDuration) { super(initialDuration); this.endScale = endScale; this.spatial = spatial; spatialName = spatial.getName(); } @Override public void onPlay() { if (playState != playState.Paused) { startScale = spatial.getWorldScale().clone(); } if (initialDuration == 0 && spatial != null) { spatial.setLocalScale(endScale); stop(); } } @Override public void onUpdate(float tpf) { if (spatial != null) { value = Math.min(time / initialDuration, 1.0f); spatial.setLocalScale(FastMath.interpolateLinear(value, startScale, endScale)); } } @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(endScale, "endScale", null); } @Override public void read(JmeImporter im) throws IOException { super.read(im); InputCapsule ic = im.getCapsule(this); spatialName = ic.readString("spatialName", ""); endScale = (Vector3f) ic.readSavable("endScale", null); } }