glTF: properly close opened stream and avoid caching them.

Fixed an issue when an animation track didn't have any translation or scale entries
empirephoenix-patch-1
Nehon 7 years ago
parent c17c3e9605
commit 3f99c80109
  1. 6
      jme3-plugins/src/gltf/java/com/jme3/scene/plugins/gltf/BinDataKey.java
  2. 22
      jme3-plugins/src/gltf/java/com/jme3/scene/plugins/gltf/GltfLoader.java

@ -1,6 +1,7 @@
package com.jme3.scene.plugins.gltf;
import com.jme3.asset.AssetKey;
import com.jme3.asset.cache.AssetCache;
/**
* Created by Nehon on 09/09/2017.
@ -9,4 +10,9 @@ class BinDataKey extends AssetKey<Object> {
public BinDataKey(String name) {
super(name);
}
@Override
public Class<? extends AssetCache> getCacheType() {
return null;
}
}

@ -140,6 +140,8 @@ public class GltfLoader implements AssetLoader {
return rootNode;
} catch (Exception e) {
throw new AssetLoadException("An error occurred loading " + assetInfo.getKey().getName(), e);
} finally {
stream.close();
}
}
@ -529,6 +531,7 @@ public class GltfLoader implements AssetLoader {
data = new byte[bufferLength];
DataInputStream dataStream = new DataInputStream(input);
dataStream.readFully(data);
dataStream.close();
}
} else {
//no URI this should not happen in a gltf file, only in glb files.
@ -1147,6 +1150,25 @@ public class GltfLoader implements AssetLoader {
float[] weights;
public void update() {
if (translations == null) {
translations = new Vector3f[times.length];
for (int i = 0; i < translations.length; i++) {
translations[i] = new Vector3f();
}
}
if (rotations == null) {
rotations = new Quaternion[times.length];
for (int i = 0; i < rotations.length; i++) {
rotations[i] = new Quaternion();
}
}
if (scales == null) {
scales = new Vector3f[times.length];
for (int i = 0; i < scales.length; i++) {
scales[i] = new Vector3f().set(Vector3f.UNIT_XYZ);
}
}
if (times[0] > 0) {
//Anim doesn't start at 0, JME can't handle that and will interpolate transforms linearly from 0 to the first frame of the anim.
//we need to add a frame at 0 that copies the first real frame

Loading…
Cancel
Save