NPE with jMonkeyEngine 3.1 alpha 4 in TerrainLodControl

Hi,
I just upgraded to JME3.1 alpha 4 and now I am getting a NPE when loading an existing .J3O with an normal terrain (created a long time ago with the SDK):

    at com.jme3.util.clone.Cloner.javaClone(Cloner.java:357)
    at com.jme3.terrain.geomipmap.TerrainLodControl.cloneFields(TerrainLodControl.java:323)
    at com.jme3.util.clone.Cloner.clone(Cloner.java:255)
    at com.jme3.util.clone.Cloner.clone(Cloner.java:160)
    at com.jme3.util.clone.ListCloneFunction.cloneFields(ListCloneFunction.java:66)
    at com.jme3.util.clone.ListCloneFunction.cloneFields(ListCloneFunction.java:43)
    at com.jme3.util.clone.Cloner.clone(Cloner.java:228)
    at com.jme3.util.clone.Cloner.clone(Cloner.java:160)
    at com.jme3.scene.Spatial.cloneFields(Spatial.java:1422)
    at com.jme3.scene.Node.cloneFields(Node.java:726)
    at com.jme3.terrain.geomipmap.TerrainQuad.cloneFields(TerrainQuad.java:1816)
    at com.jme3.util.clone.Cloner.clone(Cloner.java:255)
    at com.jme3.util.clone.Cloner.clone(Cloner.java:160)
    at com.jme3.util.clone.ListCloneFunction.cloneFields(ListCloneFunction.java:66)
    at com.jme3.util.clone.ListCloneFunction.cloneFields(ListCloneFunction.java:43)
    at com.jme3.util.clone.Cloner.clone(Cloner.java:228)
    at com.jme3.util.clone.Cloner.clone(Cloner.java:160)
    at com.jme3.scene.Node.cloneFields(Node.java:728)
    at com.jme3.util.clone.Cloner.clone(Cloner.java:255)
    at com.jme3.util.clone.Cloner.clone(Cloner.java:160)
    at com.jme3.scene.Spatial.clone(Spatial.java:1289)
    at com.jme3.scene.Node.clone(Node.java:684)
    at com.jme3.scene.Node.clone(Node.java:62)
    at com.jme3.scene.Spatial.clone(Spatial.java:1368)
    at com.jme3.scene.Spatial.clone(Spatial.java:69)
    at com.jme3.asset.CloneableAssetProcessor.createClone(CloneableAssetProcessor.java:48)
    at com.jme3.asset.DesktopAssetManager.registerAndCloneSmartAsset(DesktopAssetManager.java:320)
    at com.jme3.asset.DesktopAssetManager.loadAsset(DesktopAssetManager.java:382)
    at com.jme3.asset.DesktopAssetManager.loadModel(DesktopAssetManager.java:419)
    at com.jme3.asset.DesktopAssetManager.loadModel(DesktopAssetManager.java:423)

And yes, I’ve made a clean build;)

The reason is that “cameras” of TerrainLodControl is null - but this is kind of out of my control, because I am just loading a J3O Scene…

What am I missing?

Can you include the full stack trace please? It seems to be missing the top part.

Note: I see the problem and I’m committing a fix to master.

Wow - that was fast!

The stacktrace includes all the JME parts, but if you want to have it, here you go;)

SEVERE: Uncaught exception thrown in Thread[jME3 Main,5,main]
java.lang.NullPointerException
    at com.jme3.util.clone.Cloner.javaClone(Cloner.java:357)
    at com.jme3.terrain.geomipmap.TerrainLodControl.cloneFields(TerrainLodControl.java:323)
    at com.jme3.util.clone.Cloner.clone(Cloner.java:255)
    at com.jme3.util.clone.Cloner.clone(Cloner.java:160)
    at com.jme3.util.clone.ListCloneFunction.cloneFields(ListCloneFunction.java:66)
    at com.jme3.util.clone.ListCloneFunction.cloneFields(ListCloneFunction.java:43)
    at com.jme3.util.clone.Cloner.clone(Cloner.java:228)
    at com.jme3.util.clone.Cloner.clone(Cloner.java:160)
    at com.jme3.scene.Spatial.cloneFields(Spatial.java:1422)
    at com.jme3.scene.Node.cloneFields(Node.java:726)
    at com.jme3.terrain.geomipmap.TerrainQuad.cloneFields(TerrainQuad.java:1816)
    at com.jme3.util.clone.Cloner.clone(Cloner.java:255)
    at com.jme3.util.clone.Cloner.clone(Cloner.java:160)
    at com.jme3.util.clone.ListCloneFunction.cloneFields(ListCloneFunction.java:66)
    at com.jme3.util.clone.ListCloneFunction.cloneFields(ListCloneFunction.java:43)
    at com.jme3.util.clone.Cloner.clone(Cloner.java:228)
    at com.jme3.util.clone.Cloner.clone(Cloner.java:160)
    at com.jme3.scene.Node.cloneFields(Node.java:728)
    at com.jme3.util.clone.Cloner.clone(Cloner.java:255)
    at com.jme3.util.clone.Cloner.clone(Cloner.java:160)
    at com.jme3.scene.Spatial.clone(Spatial.java:1289)
    at com.jme3.scene.Node.clone(Node.java:684)
    at com.jme3.scene.Node.clone(Node.java:62)
    at com.jme3.scene.Spatial.clone(Spatial.java:1368)
    at com.jme3.scene.Spatial.clone(Spatial.java:69)
    at com.jme3.asset.CloneableAssetProcessor.createClone(CloneableAssetProcessor.java:48)
    at com.jme3.asset.DesktopAssetManager.registerAndCloneSmartAsset(DesktopAssetManager.java:320)
    at com.jme3.asset.DesktopAssetManager.loadAsset(DesktopAssetManager.java:382)
    at com.jme3.asset.DesktopAssetManager.loadModel(DesktopAssetManager.java:419)
    at com.jme3.asset.DesktopAssetManager.loadModel(DesktopAssetManager.java:423)
    at at.illumine.srb.locomotion.test.LocomotionTest.setupPlanet(LocomotionTest.java:241)
    at at.illumine.srb.locomotion.test.LocomotionTest.simpleInitApp(LocomotionTest.java:104)
    at com.jme3.app.SimpleApplication.initialize(SimpleApplication.java:227)
    at com.jme3.system.lwjgl.LwjglAbstractDisplay.initInThread(LwjglAbstractDisplay.java:130)
    at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:211)

Where “at.illumine.srb.locomotion.test.LocomotionTest.setupPlanet(LocomotionTest.java:241)” is:

Node model = (Node) assetManager.loadModel("Scenes/castle_level_small.j3o");

When I see a stack trace without the exception itself then I worry it might have missed some things from the top. I checked anyway and found the issue.

I don’t know if you can build and test from master but that’s the way to get the fix until we push alpha5… which looks like it will be sooner rather than later but I hope to catch any of these other sorts of issues first.

I see - just wanted to make your live a little bit easier for you, but obviously got it the other way around;)

I would be able to build from master, but this would mean a little bit of setup first - and currently its not worth it… I can live without this anyway, just wanted to let you know;)

Thanks for fixing it and all the other stuff you are doing!!!

Ok, cool. Thanks for letting us know.