From f354343e4787e275967e9479b85ebe6d736114c3 Mon Sep 17 00:00:00 2001 From: javasabr Date: Sun, 5 Jun 2016 20:30:21 +0300 Subject: [PATCH 1/2] fixed the NPE with controls --- jme3-core/src/main/java/com/jme3/scene/Spatial.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/jme3-core/src/main/java/com/jme3/scene/Spatial.java b/jme3-core/src/main/java/com/jme3/scene/Spatial.java index 452ccce47..aa4c80298 100644 --- a/jme3-core/src/main/java/com/jme3/scene/Spatial.java +++ b/jme3-core/src/main/java/com/jme3/scene/Spatial.java @@ -1635,6 +1635,12 @@ public abstract class Spatial implements Savable, Cloneable, Collidable, Cloneab //controls = ic.readSavableArrayList("controlsList", null)); controls.addAll(0, ic.readSavableArrayList("controlsList", null)); + // remove all controls which wasn't loaded. + for (Iterator iterator = controls.iterator(); iterator.hasNext(); ) { + final Control control = iterator.next(); + if(control == null) iterator.remove(); + } + userData = (HashMap) ic.readStringSavableMap("user_data", null); } From be66436745eec942b60b549ffb6b1ea595a28cc3 Mon Sep 17 00:00:00 2001 From: javasabr Date: Sun, 26 Jun 2016 08:52:38 +0300 Subject: [PATCH 2/2] added warning --- jme3-core/src/main/java/com/jme3/scene/Spatial.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/jme3-core/src/main/java/com/jme3/scene/Spatial.java b/jme3-core/src/main/java/com/jme3/scene/Spatial.java index aa4c80298..d3d2b23f8 100644 --- a/jme3-core/src/main/java/com/jme3/scene/Spatial.java +++ b/jme3-core/src/main/java/com/jme3/scene/Spatial.java @@ -55,6 +55,7 @@ import com.jme3.util.SafeArrayList; import com.jme3.util.TempVars; import java.io.IOException; import java.util.*; +import java.util.logging.Level; import java.util.logging.Logger; /** @@ -1636,9 +1637,13 @@ public abstract class Spatial implements Savable, Cloneable, Collidable, Cloneab controls.addAll(0, ic.readSavableArrayList("controlsList", null)); // remove all controls which wasn't loaded. - for (Iterator iterator = controls.iterator(); iterator.hasNext(); ) { - final Control control = iterator.next(); - if(control == null) iterator.remove(); + if(controls.contains(null)) { + logger.log(Level.WARNING, "This spatial has problems with loading controls.", this); + + for (Iterator iterator = controls.iterator(); iterator.hasNext(); ) { + final Control control = iterator.next(); + if(control == null) iterator.remove(); + } } userData = (HashMap) ic.readStringSavableMap("user_data", null);