TerrainLodControl Exception?

Hello,

Since I’ve updated SDK to Nightly, i got this exception while loading a J3o, in which terrain has been built with SDK terrain tools (a few version ago).

[java]
mai 01, 2013 4:32:43 PM com.jme3.terrain.geomipmap.TerrainLodControl updateQuadLODs
SEVERE: null
java.util.concurrent.ExecutionException: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252)
at java.util.concurrent.FutureTask.get(FutureTask.java:111)
at com.jme3.terrain.geomipmap.TerrainLodControl.updateQuadLODs(TerrainLodControl.java:229)
at com.jme3.terrain.geomipmap.TerrainLodControl.updateLOD(TerrainLodControl.java:167)
at com.jme3.terrain.geomipmap.TerrainLodControl.controlUpdate(TerrainLodControl.java:156)
at com.jme3.scene.control.AbstractControl.update(AbstractControl.java:112)
at com.jme3.scene.Spatial.runControlUpdate(Spatial.java:570)
at com.jme3.scene.Spatial.updateLogicalState(Spatial.java:688)
at com.jme3.scene.Node.updateLogicalState(Node.java:145)
at com.jme3.scene.Node.updateLogicalState(Node.java:152)
at com.jme3.scene.Node.updateLogicalState(Node.java:152)
at com.jme3.scene.Node.updateLogicalState(Node.java:152)
at com.jme3.app.SimpleApplication.update(SimpleApplication.java:244)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.runLoop(LwjglAbstractDisplay.java:151)
at com.jme3.system.lwjgl.LwjglDisplay.runLoop(LwjglDisplay.java:185)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:228)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:604)
at java.util.ArrayList.get(ArrayList.java:382)
at com.jme3.terrain.geomipmap.lodcalc.DistanceLodCalculator.calculateLod(DistanceLodCalculator.java:66)
at com.jme3.terrain.geomipmap.TerrainQuad.calculateLod(TerrainQuad.java:379)
at com.jme3.terrain.geomipmap.TerrainQuad.calculateLod(TerrainQuad.java:375)
at com.jme3.terrain.geomipmap.TerrainQuad.calculateLod(TerrainQuad.java:375)
at com.jme3.terrain.geomipmap.TerrainLodControl$UpdateLOD.call(TerrainLodControl.java:367)
at com.jme3.terrain.geomipmap.TerrainLodControl$UpdateLOD.call(TerrainLodControl.java:347)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
… 1 more
[/java]

I do not use any LOD for this J3o yet, so I have no idea how to solve this… any hints ?

Thank you in advance for your help :amused:

Regenerate the j3o from the source.

Sure, but I was looking for a kind of “repair” method. :slight_smile:
Btw, even when I generate terrain from start, I have to delete the default LOD objects in the file.

I don’t understand why, but it works…

Something in the SDK changed a little while ago that causes no cameras to be listed for the control. I just committed a fix to the distance calculator to check if there are non existing, and then it will just not update the LOD instead or error out.