Skip to content

Commit 1e237f3

Browse files
authored
Made extension loaders non-static to avoid concurrency issues (#1886)
Now each GltfLoader instantiated via ThreadLocal will have its own instances of extension loaders.
1 parent 9c3d363 commit 1e237f3

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-10
lines changed

jme3-plugins/src/gltf/java/com/jme3/scene/plugins/gltf/CustomContentManager.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,13 @@ public class CustomContentManager {
5151
private GltfModelKey key;
5252
private GltfLoader gltfLoader;
5353

54-
private static Map<String, ExtensionLoader> defaultExtensionLoaders = new HashMap<>();
54+
private final Map<String, ExtensionLoader> defaultExtensionLoaders = new HashMap<>();
5555

56-
static {
56+
public CustomContentManager() {
5757
defaultExtensionLoaders.put("KHR_materials_pbrSpecularGlossiness", new PBRSpecGlossExtensionLoader());
5858
defaultExtensionLoaders.put("KHR_lights_punctual", new LightsPunctualExtensionLoader());
5959
defaultExtensionLoaders.put("KHR_materials_unlit", new UnlitExtensionLoader());
60-
defaultExtensionLoaders.put("KHR_texture_transform", new TextureTransformExtensionLoader());
60+
defaultExtensionLoaders.put("KHR_texture_transform", new TextureTransformExtensionLoader());
6161
}
6262

6363
void init(GltfLoader gltfLoader) {

jme3-plugins/src/gltf/java/com/jme3/scene/plugins/gltf/GltfLoader.java

+7-7
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public class GltfLoader implements AssetLoader {
6565
private static final Logger logger = Logger.getLogger(GltfLoader.class.getName());
6666

6767
// Data cache for already parsed JME objects
68-
private Map<String, Object[]> dataCache = new HashMap<>();
68+
private final Map<String, Object[]> dataCache = new HashMap<>();
6969
private JsonArray scenes;
7070
private JsonArray nodes;
7171
private JsonArray meshes;
@@ -85,12 +85,12 @@ public class GltfLoader implements AssetLoader {
8585
private JsonObject docRoot;
8686
private Node rootNode;
8787

88-
private FloatArrayPopulator floatArrayPopulator = new FloatArrayPopulator();
89-
private Vector3fArrayPopulator vector3fArrayPopulator = new Vector3fArrayPopulator();
90-
private QuaternionArrayPopulator quaternionArrayPopulator = new QuaternionArrayPopulator();
91-
private Matrix4fArrayPopulator matrix4fArrayPopulator = new Matrix4fArrayPopulator();
92-
private Map<String, MaterialAdapter> defaultMaterialAdapters = new HashMap<>();
93-
private CustomContentManager customContentManager = new CustomContentManager();
88+
private final FloatArrayPopulator floatArrayPopulator = new FloatArrayPopulator();
89+
private final Vector3fArrayPopulator vector3fArrayPopulator = new Vector3fArrayPopulator();
90+
private final QuaternionArrayPopulator quaternionArrayPopulator = new QuaternionArrayPopulator();
91+
private final Matrix4fArrayPopulator matrix4fArrayPopulator = new Matrix4fArrayPopulator();
92+
private final Map<String, MaterialAdapter> defaultMaterialAdapters = new HashMap<>();
93+
private final CustomContentManager customContentManager = new CustomContentManager();
9494
private boolean useNormalsFlag = false;
9595

9696
Map<SkinData, List<Spatial>> skinnedSpatials = new HashMap<>();

0 commit comments

Comments
 (0)