Merge pull request #663 from NemesisMate/patch-18

Fixed IllegalArgumentException when removing a LodControl from a spatial
This commit is contained in:
empirephoenix 2017-06-23 12:51:37 +02:00 committed by GitHub
commit 2a09771bc8

View File

@ -121,17 +121,23 @@ public class LodControl extends AbstractControl implements Cloneable, JmeCloneab
@Override
public void setSpatial(Spatial spatial) {
if (!(spatial instanceof Geometry)) {
if (spatial != null && !(spatial instanceof Geometry)) {
throw new IllegalArgumentException("LodControl can only be attached to Geometry!");
}
super.setSpatial(spatial);
Geometry geom = (Geometry) spatial;
Mesh mesh = geom.getMesh();
numLevels = mesh.getNumLodLevels();
numTris = new int[numLevels];
for (int i = numLevels - 1; i >= 0; i--) {
numTris[i] = mesh.getTriangleCount(i);
if(spatial != null) {
Geometry geom = (Geometry) spatial;
Mesh mesh = geom.getMesh();
numLevels = mesh.getNumLodLevels();
numTris = new int[numLevels];
for (int i = numLevels - 1; i >= 0; i--) {
numTris[i] = mesh.getTriangleCount(i);
}
} else {
numLevels = 0;
numTris = null;
}
}