Procházet zdrojové kódy

Store in metadata.gltf.extras

- Also remove unnecessary check on babylonMaterial
Pelle Johnsen před 6 roky
rodič
revize
e96c0d373c

+ 4 - 7
loaders/src/glTF/2.0/Extensions/ExtrasAsMetadata.ts

@@ -31,10 +31,9 @@ export class ExtrasAsMetadata implements IGLTFLoaderExtension {
         gltfProp: IProperty
     ): void {
         if (gltfProp.extras && Object.keys(gltfProp.extras).length > 0) {
-            if (!babylonObject.metadata) {
-                babylonObject.metadata = {};
-            }
-            Object.assign(babylonObject.metadata, gltfProp.extras);
+            const metadata = (babylonObject.metadata = babylonObject.metadata || {});
+            const gltf = (metadata.gltf = metadata.gltf || {});
+            gltf.extras = gltfProp.extras;
         }
     }
 
@@ -91,9 +90,7 @@ export class ExtrasAsMetadata implements IGLTFLoaderExtension {
             material,
             babylonDrawMode
         );
-        if (babylonMaterial) {
-            this._assignExtras(babylonMaterial, material);
-        }
+        this._assignExtras(babylonMaterial, material);
         return babylonMaterial;
     }
 }

+ 10 - 4
tests/unit/babylon/src/Loading/babylon.sceneLoader.tests.ts

@@ -521,16 +521,22 @@ describe('Babylon Scene Loader', function() {
                 const mesh = scene.getMeshByName("Box001");
                 expect(mesh, "Box001").to.exist;
                 expect(mesh.metadata, "Box001 metadata").to.exist;
-                expect(mesh.metadata.kind, "Box001 extras.kind").to.equal("nice cube");
-                expect(mesh.metadata.magic, "Box001 extras.magic").to.equal(42);
+                expect(mesh.metadata.gltf, "Box001 metadata.gltf").to.exist;
+                expect(mesh.metadata.gltf.extras, "Box001 metadata.gltf.extras").to.exist;
+                expect(mesh.metadata.gltf.extras.kind, "Box001 extras.kind").to.equal("nice cube");
+                expect(mesh.metadata.gltf.extras.magic, "Box001 extras.magic").to.equal(42);
                 const camera = scene.getCameraByName("Camera");
                 expect(camera, "Camera").to.exist;
                 expect(camera.metadata, "Camera metadata").to.exist;
-                expect(camera.metadata.custom, "Camera extras.custom").to.equal("cameraProp");
+                expect(mesh.metadata.gltf, "Camera metadata.gltf").to.exist;
+                expect(mesh.metadata.gltf.extras, "Camera metadata.gltf.extras").to.exist;
+                expect(camera.metadata.gltf.extras.custom, "Camera extras.custom").to.equal("cameraProp");
                 const material = scene.getMaterialByName("01___Default")
                 expect(material, "Material").to.exist;
                 expect(material.metadata, "Material metadata").to.exist;
-                expect(material.metadata.custom, "Material extras.custom").to.equal("materialProp");
+                expect(mesh.metadata.gltf, "Material metadata.gltf").to.exist;
+                expect(mesh.metadata.gltf.extras, "Material metadata.gltf.extras").to.exist;
+                expect(material.metadata.gltf.extras.custom, "Material extras.custom").to.equal("materialProp");
 
             });
         });