Explorar el Código

Bugfix: fixed an issue that could cause NPE to be thrown, when somehow object or skeleton animation maps were null.

git-svn-id: https://jmonkeyengine.googlecode.com/svn/branches/gradle-restructure@11000 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
Kae..pl hace 11 años
padre
commit
4c8369f17e
Se han modificado 1 ficheros con 22 adiciones y 14 borrados
  1. 22 14
      jme3-blender/src/main/java/com/jme3/asset/BlenderKey.java

+ 22 - 14
jme3-blender/src/main/java/com/jme3/asset/BlenderKey.java

@@ -553,20 +553,28 @@ public class BlenderKey extends ModelKey {
         oc.write(skyGeneratedTextureShape, "sky-generated-texture-shape", SkyGeneratedTextureShape.SPHERE);
         oc.write(optimiseTextures, "optimise-textures", false);
 
-        oc.write(nodeAnimationMap.size(), "node-anims-map-size", 0);
-        int counter = 0;
-        for (Entry<String, List<String>> entry : nodeAnimationMap.entrySet()) {
-            oc.write(entry.getKey(), "node-anim-" + counter, null);
-            oc.write(entry.getValue().toArray(new String[entry.getValue().size()]), "node-anims-" + counter, null);
-            ++counter;
-        }
-
-        oc.write(skeletonAnimationMap.size(), "skeleton-anims-map-size", 0);
-        counter = 0;
-        for (Entry<String, List<String>> entry : skeletonAnimationMap.entrySet()) {
-            oc.write(entry.getKey(), "skeleton-anim-" + counter, null);
-            oc.write(entry.getValue().toArray(new String[entry.getValue().size()]), "skeleton-anims-" + counter, null);
-            ++counter;
+        if (nodeAnimationMap == null) {
+            oc.write(0, "node-anims-map-size", 0);
+        } else {
+            oc.write(nodeAnimationMap.size(), "node-anims-map-size", 0);
+            int counter = 0;
+            for (Entry<String, List<String>> entry : nodeAnimationMap.entrySet()) {
+                oc.write(entry.getKey(), "node-anim-" + counter, null);
+                oc.write(entry.getValue().toArray(new String[entry.getValue().size()]), "node-anims-" + counter, null);
+                ++counter;
+            }
+        }
+
+        if (skeletonAnimationMap == null) {
+            oc.write(0, "skeleton-anims-map-size", 0);
+        } else {
+            oc.write(skeletonAnimationMap.size(), "skeleton-anims-map-size", 0);
+            int counter = 0;
+            for (Entry<String, List<String>> entry : skeletonAnimationMap.entrySet()) {
+                oc.write(entry.getKey(), "skeleton-anim-" + counter, null);
+                oc.write(entry.getValue().toArray(new String[entry.getValue().size()]), "skeleton-anims-" + counter, null);
+                ++counter;
+            }
         }
     }