Sfoglia il codice sorgente

Fix bug #2277 - GltfLoader (#2309)

* fix bug #2277

* update

* script error

* module implementation

* corrections...

---------

Co-authored-by: wil <wil@debian>
Night Rider 1 anno fa
parent
commit
6709ee8dc6

+ 2 - 2
jme3-examples/build.gradle

@@ -24,8 +24,8 @@ dependencies {
     implementation project(':jme3-networking')
     implementation project(':jme3-niftygui')
     implementation project(':jme3-plugins')
-//    implementation project(':jme3-plugins-json')
-//    implementation project(':jme3-plugins-json-gson')
+    implementation project(':jme3-plugins-json')
+    implementation project(':jme3-plugins-json-gson')
     implementation project(':jme3-terrain')
     implementation project(':jme3-awt-dialogs')
     runtimeOnly project(':jme3-testdata')

+ 19 - 0
jme3-plugins-json-gson/src/main/java/com/jme3/plugins/gson/GsonElement.java

@@ -36,6 +36,8 @@ import com.jme3.plugins.json.JsonElement;
 import com.jme3.plugins.json.JsonObject;
 import com.jme3.plugins.json.JsonPrimitive;
 
+import java.util.Objects;
+
 /**
  * GSON implementation of {@link JsonElement}
  */
@@ -46,6 +48,23 @@ class GsonElement implements JsonElement {
         this.element = element;
     }
 
+    @Override
+    public int hashCode() {
+        return Objects.hashCode(this.element);
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj == null || getClass() != obj.getClass()) {
+            return false;
+        }
+        final GsonElement other = (GsonElement) obj;
+        return Objects.equals(this.element, other.element);
+    }
+    
     protected boolean isNull(com.google.gson.JsonElement element) {
         if (element == null) return true;
         if (element.isJsonNull()) return true;

+ 0 - 1
jme3-plugins-json/src/main/java/com/jme3/plugins/json/JsonElement.java

@@ -98,5 +98,4 @@ public interface JsonElement {
      * @return the casted JsonElement
      */
     public <T extends JsonElement> T autoCast();
-
 }

+ 3 - 1
jme3-plugins/build.gradle

@@ -11,6 +11,8 @@ sourceSets {
 
 dependencies {
     api project(':jme3-core')
-    api 'com.google.code.gson:gson:2.9.1'
+    
+    implementation project(':jme3-plugins-json')
+    implementation project(':jme3-plugins-json-gson')
     testRuntimeOnly project(':jme3-desktop')
 }

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

@@ -31,8 +31,8 @@
  */
 package com.jme3.scene.plugins.gltf;
 
-import com.google.gson.JsonArray;
-import com.google.gson.JsonElement;
+import com.jme3.plugins.json.JsonArray;
+import com.jme3.plugins.json.JsonElement;
 import com.jme3.asset.AssetLoadException;
 import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;

+ 1 - 1
jme3-plugins/src/gltf/java/com/jme3/scene/plugins/gltf/ExtensionLoader.java

@@ -31,7 +31,7 @@
  */
 package com.jme3.scene.plugins.gltf;
 
-import com.google.gson.JsonElement;
+import com.jme3.plugins.json.JsonElement;
 import java.io.IOException;
 
 /**

+ 1 - 1
jme3-plugins/src/gltf/java/com/jme3/scene/plugins/gltf/ExtrasLoader.java

@@ -31,7 +31,7 @@
  */
 package com.jme3.scene.plugins.gltf;
 
-import com.google.gson.JsonElement;
+import com.jme3.plugins.json.JsonElement;
 
 /**
  * Interface to handle a glTF extra.

+ 5 - 7
jme3-plugins/src/gltf/java/com/jme3/scene/plugins/gltf/GltfLoader.java

@@ -31,12 +31,10 @@
  */
 package com.jme3.scene.plugins.gltf;
 
-import com.google.gson.JsonArray;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonPrimitive;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonParser;
-import com.google.gson.stream.JsonReader;
+import com.jme3.plugins.json.JsonArray;
+import com.jme3.plugins.json.JsonObject;
+import com.jme3.plugins.json.JsonPrimitive;
+import com.jme3.plugins.json.JsonElement;
 import com.jme3.anim.*;
 import com.jme3.asset.*;
 import com.jme3.material.Material;
@@ -123,7 +121,7 @@ public class GltfLoader implements AssetLoader {
                 defaultMat.setFloat("Roughness", 1f);
             }
 
-            docRoot = JsonParser.parseReader(new JsonReader(new InputStreamReader(stream))).getAsJsonObject();
+            docRoot = parse(stream);
 
             JsonObject asset = docRoot.getAsJsonObject().get("asset").getAsJsonObject();
             getAsString(asset, "generator");

+ 16 - 4
jme3-plugins/src/gltf/java/com/jme3/scene/plugins/gltf/GltfUtils.java

@@ -31,12 +31,14 @@
  */
 package com.jme3.scene.plugins.gltf;
 
-import com.google.gson.JsonArray;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
+import com.jme3.plugins.json.JsonArray;
+import com.jme3.plugins.json.JsonElement;
+import com.jme3.plugins.json.JsonObject;
 import com.jme3.asset.AssetInfo;
 import com.jme3.asset.AssetLoadException;
 import com.jme3.math.*;
+import com.jme3.plugins.json.Json;
+import com.jme3.plugins.json.JsonParser;
 import com.jme3.scene.*;
 import com.jme3.texture.Texture;
 import com.jme3.util.*;
@@ -58,8 +60,18 @@ public class GltfUtils {
      */
     private GltfUtils() {
     }
+    
+    /**
+     * Parse a json input stream and returns a {@link JsonObject}
+     * @param stream the stream to parse
+     * @return the JsonObject
+     */
+    public static JsonObject parse(InputStream stream) {
+        JsonParser parser = Json.create();
+        return parser.parse(stream);
+    }
 
-      public static Mesh.Mode getMeshMode(Integer mode) {
+    public static Mesh.Mode getMeshMode(Integer mode) {
         if (mode == null) {
             return Mesh.Mode.Triangles;
         }

+ 3 - 3
jme3-plugins/src/gltf/java/com/jme3/scene/plugins/gltf/LightsPunctualExtensionLoader.java

@@ -31,9 +31,9 @@
  */
 package com.jme3.scene.plugins.gltf;
 
-import com.google.gson.JsonArray;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
+import com.jme3.plugins.json.JsonArray;
+import com.jme3.plugins.json.JsonElement;
+import com.jme3.plugins.json.JsonObject;
 import com.jme3.asset.AssetLoadException;
 import com.jme3.light.DirectionalLight;
 import com.jme3.light.Light;

+ 1 - 1
jme3-plugins/src/gltf/java/com/jme3/scene/plugins/gltf/PBREmissiveStrengthExtensionLoader.java

@@ -32,7 +32,7 @@
 package com.jme3.scene.plugins.gltf;
 
 import com.jme3.asset.AssetKey;
-import com.google.gson.JsonElement;
+import com.jme3.plugins.json.JsonElement;
 import java.io.IOException;
 
 /**

+ 1 - 1
jme3-plugins/src/gltf/java/com/jme3/scene/plugins/gltf/PBRSpecGlossExtensionLoader.java

@@ -34,7 +34,7 @@ package com.jme3.scene.plugins.gltf;
 import com.jme3.asset.AssetKey;
 
 import java.io.IOException;
-import com.google.gson.JsonElement;
+import com.jme3.plugins.json.JsonElement;
 import static com.jme3.scene.plugins.gltf.GltfUtils.getAsColor;
 import static com.jme3.scene.plugins.gltf.GltfUtils.getAsFloat;
 

+ 3 - 3
jme3-plugins/src/gltf/java/com/jme3/scene/plugins/gltf/TextureTransformExtensionLoader.java

@@ -31,9 +31,9 @@
  */
 package com.jme3.scene.plugins.gltf;
 
-import com.google.gson.JsonArray;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
+import com.jme3.plugins.json.JsonArray;
+import com.jme3.plugins.json.JsonElement;
+import com.jme3.plugins.json.JsonObject;
 import com.jme3.asset.AssetLoadException;
 import com.jme3.math.Matrix3f;
 import com.jme3.math.Vector3f;

+ 1 - 1
jme3-plugins/src/gltf/java/com/jme3/scene/plugins/gltf/UnlitExtensionLoader.java

@@ -31,7 +31,7 @@
  */
 package com.jme3.scene.plugins.gltf;
 
-import com.google.gson.JsonElement;
+import com.jme3.plugins.json.JsonElement;
 import com.jme3.asset.AssetKey;
 
 /**

+ 4 - 4
jme3-plugins/src/gltf/java/com/jme3/scene/plugins/gltf/UserDataLoader.java

@@ -32,10 +32,10 @@
 
 package com.jme3.scene.plugins.gltf;
 
-import com.google.gson.JsonArray;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonPrimitive;
+import com.jme3.plugins.json.JsonArray;
+import com.jme3.plugins.json.JsonElement;
+import com.jme3.plugins.json.JsonObject;
+import com.jme3.plugins.json.JsonPrimitive;
 import com.jme3.scene.Spatial;
 
 import java.lang.reflect.Array;