[Solved] Problem with MotionTrack::pause()

Hi,



I’m trying to pause a spatial when it reaches a way point of a MotionPath, but the spatial vanishes after the second point.



Here’s the code:



[java]

package mygame;



import com.jme3.animation.LoopMode;

import com.jme3.app.SimpleApplication;

import com.jme3.cinematic.MotionPath;

import com.jme3.cinematic.MotionPathListener;

import com.jme3.cinematic.PlayState;

import com.jme3.cinematic.events.MotionTrack;

import com.jme3.material.Material;

import com.jme3.math.ColorRGBA;

import com.jme3.math.Vector3f;

import com.jme3.renderer.RenderManager;

import com.jme3.scene.Geometry;

import com.jme3.scene.shape.Box;

import com.jme3.system.AppSettings;



public class Main extends SimpleApplication {



MotionTrack motionControl;

MotionPath path;

float timer;

float delay;

float fps = 60;



public static void main(String[] args) {

Main app = new Main();

AppSettings settings = new AppSettings(true);

settings.setFrameRate(60);

app.setSettings(settings);

app.start();

}



@Override

public void simpleInitApp() {

Box b = new Box(Vector3f.ZERO, 1, 1, 1);

Geometry geom = new Geometry(“Box”, b);



Material mat = new Material(assetManager, “Common/MatDefs/Misc/Unshaded.j3md”);

mat.setColor(“Color”, ColorRGBA.Blue);

geom.setMaterial(mat);



rootNode.attachChild(geom);



timer = 0;

delay = 2;



//the path

path = new MotionPath();

path.addWayPoint(new Vector3f(0, 0, 0));

path.addWayPoint(new Vector3f(5, 0, 0));

path.addWayPoint(new Vector3f(0, 0, 0));

path.addWayPoint(new Vector3f(-5, 0, 0));

path.setCycle(true);

path.enableDebugShape(assetManager, rootNode);

motionControl = new MotionTrack(geom, path);

motionControl.setLoopMode(LoopMode.Loop);

motionControl.setSpeed(1.5f);

}



@Override

public void simpleUpdate(float tpf) {

//*** MotionTrack pause() test ****

if(motionControl.getPlayState() == PlayState.Stopped) motionControl.play();



if(timer < delay) {

timer += (float)1/fps;

if(motionControl.getPlayState() == PlayState.Playing) {

motionControl.pause();

}

}

else if(motionControl.getPlayState() == PlayState.Paused) {

motionControl.play();

}



path.addListener( new MotionPathListener() {

public void onWayPointReach(MotionTrack control, int wayPointIndex) {

timer = 0;

}

});

}



@Override

public void simpleRender(RenderManager rm) {

//TODO: add render code

}

}

[/java]



I tried a workaround with setting the MotionTrack’s speed at 0 then setting it at original value: the spatial doesn’t disapears but behavior is still strange.



Note: when no pause is attempted the path works just fine.



If someone have an idea.

I see no issue with your test case, however i’m running it against the very last SVN and there has been heavy changes on cinematics 2 days ago.

Could you try to use latest nightly and see if you still have the issue?

Thank you,



glad to know that my code works.



But I feel uncomfortable with all this nightly business.



I downloaded it and I actually don’t know where to put these files in. (I found a lib folder in jmonkeyplatform/platform but the rest of the content doesn’t fit the files tree…).



Unless someone is kind enough to answer such a noob issue I’d rather wait the next auto update.

Hi,



I got the latest nightly now and you were right, it works.