diff --git a/engine/src/core/com/jme3/cinematic/events/AbstractCinematicEvent.java b/engine/src/core/com/jme3/cinematic/events/AbstractCinematicEvent.java index 30722c89e..74e644843 100644 --- a/engine/src/core/com/jme3/cinematic/events/AbstractCinematicEvent.java +++ b/engine/src/core/com/jme3/cinematic/events/AbstractCinematicEvent.java @@ -40,6 +40,7 @@ import com.jme3.export.JmeExporter; import com.jme3.export.JmeImporter; import com.jme3.export.OutputCapsule; import com.jme3.system.NanoTimer; +import com.jme3.system.Timer; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -58,8 +59,8 @@ public abstract class AbstractCinematicEvent implements CinematicEvent { protected float initialDuration = 10; protected LoopMode loopMode = LoopMode.DontLoop; protected float time = 0; - //nano timer for precisely computing the elapsed time - protected NanoTimer timer; + protected Timer timer; + protected float start = 0; /** * the last time the event was paused */ @@ -108,9 +109,11 @@ public abstract class AbstractCinematicEvent implements CinematicEvent { onPlay(); playState = PlayState.Playing; if (timer == null) { + //only when used as a control timer = new NanoTimer(); } - timer.reset(); + start = timer.getTimeInSeconds(); + //timer.reset(); if (listeners != null) { for (int i = 0; i < listeners.size(); i++) { CinematicEventListener cel = listeners.get(i); @@ -130,7 +133,7 @@ public abstract class AbstractCinematicEvent implements CinematicEvent { */ public void internalUpdate(float tpf) { if (playState == PlayState.Playing) { - time = (elapsedTimePause + timer.getTimeInSeconds()) * speed; + time = (elapsedTimePause + timer.getTimeInSeconds() - start) * speed; onUpdate(tpf); if (time >= initialDuration && loopMode == loopMode.DontLoop) { @@ -287,7 +290,8 @@ public abstract class AbstractCinematicEvent implements CinematicEvent { * @param cinematic */ public void initEvent(Application app, Cinematic cinematic) { - timer = new NanoTimer(); + timer = app.getContext().getTimer(); + //timer = new NanoTimer(); } /** diff --git a/engine/src/core/com/jme3/cinematic/events/MotionTrack.java b/engine/src/core/com/jme3/cinematic/events/MotionTrack.java index 3221926c3..0f3c1a0c9 100644 --- a/engine/src/core/com/jme3/cinematic/events/MotionTrack.java +++ b/engine/src/core/com/jme3/cinematic/events/MotionTrack.java @@ -46,7 +46,6 @@ import com.jme3.renderer.RenderManager; import com.jme3.renderer.ViewPort; import com.jme3.scene.Spatial; import com.jme3.scene.control.Control; -import com.jme3.system.NanoTimer; import java.io.IOException; /** @@ -175,7 +174,7 @@ public class MotionTrack extends AbstractCinematicEvent implements Control { public void initEvent(Application app, Cinematic cinematic) { super.initEvent(app, cinematic); isControl = false; - timer = null; + // timer = null; } public void onUpdate(float tpf) {