Просмотр исходного кода

Serializing / parsing missing properties for mesh instances.

julien-moreau 5 лет назад
Родитель
Сommit
1224fdb2d3
1 измененных файлов с 24 добавлено и 0 удалено
  1. 24 0
      src/Meshes/mesh.ts

+ 24 - 0
src/Meshes/mesh.ts

@@ -3009,6 +3009,8 @@ export class Mesh extends AbstractMesh implements IGetSetVerticesData {
             var serializationInstance: any = {
                 name: instance.name,
                 id: instance.id,
+                isPickable: instance.isPickable,
+                checkCollisions: instance.checkCollisions,
                 position: instance.position.asArray(),
                 scaling: instance.scaling.asArray()
             };
@@ -3022,6 +3024,24 @@ export class Mesh extends AbstractMesh implements IGetSetVerticesData {
             } else if (instance.rotation) {
                 serializationInstance.rotation = instance.rotation.asArray();
             }
+
+            // Physics
+            //TODO implement correct serialization for physics impostors.
+            if (this.getScene()._getComponent(SceneComponentConstants.NAME_PHYSICSENGINE)) {
+                let impostor = instance.getPhysicsImpostor();
+                if (impostor) {
+                    serializationInstance.physicsMass = impostor.getParam("mass");
+                    serializationInstance.physicsFriction = impostor.getParam("friction");
+                    serializationInstance.physicsRestitution = impostor.getParam("mass");
+                    serializationInstance.physicsImpostor = impostor.type;
+                }
+            }
+
+            // Metadata
+            if (instance.metadata) {
+                serializationInstance.metadata = instance.metadata;
+            }
+
             serializationObject.instances.push(serializationInstance);
 
             // Animations
@@ -3375,6 +3395,10 @@ export class Mesh extends AbstractMesh implements IGetSetVerticesData {
                     instance._waitingParentId = parsedInstance.parentId;
                 }
 
+                if (parsedInstance.isPickable !== undefined && parsedInstance.isPickable !== null) {
+                    instance.isPickable = parsedInstance.isPickable;
+                }
+
                 if (parsedInstance.rotationQuaternion) {
                     instance.rotationQuaternion = Quaternion.FromArray(parsedInstance.rotationQuaternion);
                 } else if (parsedInstance.rotation) {