瀏覽代碼

Fixes for ArcRotate loading

The file loader was also missing the function to set the target vector
in case no target mesh id was given.
Raanan Weber 10 年之前
父節點
當前提交
cf77623abf

+ 7 - 1
Babylon/Loading/Plugins/babylon.babylonFileLoader.js

@@ -373,7 +373,13 @@ var BABYLON;
             }
             }
             // Target
             // Target
             if (parsedCamera.target) {
             if (parsedCamera.target) {
-                camera.setTarget(BABYLON.Vector3.FromArray(parsedCamera.target));
+                if (camera.setTarget) {
+                    camera.setTarget(BABYLON.Vector3.FromArray(parsedCamera.target));
+                }
+                else {
+                    //For ArcRotate
+                    camera.target = BABYLON.Vector3.FromArray(parsedCamera.target);
+                }
             }
             }
             else {
             else {
                 camera.rotation = BABYLON.Vector3.FromArray(parsedCamera.rotation);
                 camera.rotation = BABYLON.Vector3.FromArray(parsedCamera.rotation);

+ 6 - 1
Babylon/Loading/Plugins/babylon.babylonFileLoader.ts

@@ -454,7 +454,12 @@
 
 
         // Target
         // Target
         if (parsedCamera.target) {
         if (parsedCamera.target) {
-            camera.setTarget(BABYLON.Vector3.FromArray(parsedCamera.target));
+            if (camera.setTarget) {
+                camera.setTarget(BABYLON.Vector3.FromArray(parsedCamera.target));
+            } else {
+                //For ArcRotate
+                camera.target = BABYLON.Vector3.FromArray(parsedCamera.target);
+            }
         } else {
         } else {
             camera.rotation = BABYLON.Vector3.FromArray(parsedCamera.rotation);
             camera.rotation = BABYLON.Vector3.FromArray(parsedCamera.rotation);
         }
         }

+ 6 - 7
Babylon/Tools/babylon.sceneSerializer.js

@@ -49,7 +49,7 @@ var BABYLON;
     var serializeCamera = function (camera) {
     var serializeCamera = function (camera) {
         var serializationObject = {};
         var serializationObject = {};
         serializationObject.name = camera.name;
         serializationObject.name = camera.name;
-        serializationObject.tags = BABYLON.Tags.GetTags(camera);
+        serializationObject.tags = BABYLON.Tags.GetTags(camera) || [];
         serializationObject.id = camera.id;
         serializationObject.id = camera.id;
         serializationObject.position = camera.position.asArray();
         serializationObject.position = camera.position.asArray();
         // Parent
         // Parent
@@ -126,6 +126,9 @@ var BABYLON;
         if (camera['speed'] !== undefined) {
         if (camera['speed'] !== undefined) {
             serializationObject.speed = camera['speed'];
             serializationObject.speed = camera['speed'];
         }
         }
+        if (camera['target'] && camera['target'] instanceof BABYLON.Vector3) {
+            serializationObject.target = camera['target'].asArray();
+        }
         // Target
         // Target
         if (camera['rotation'] && camera['rotation'] instanceof BABYLON.Vector3) {
         if (camera['rotation'] && camera['rotation'] instanceof BABYLON.Vector3) {
             serializationObject.rotation = camera['rotation'].asArray();
             serializationObject.rotation = camera['rotation'].asArray();
@@ -134,12 +137,8 @@ var BABYLON;
         if (camera['lockedTarget'] && camera['lockedTarget'].id) {
         if (camera['lockedTarget'] && camera['lockedTarget'].id) {
             serializationObject.lockedTargetId = camera['lockedTarget'].id;
             serializationObject.lockedTargetId = camera['lockedTarget'].id;
         }
         }
-        if (camera['checkCollisions'] !== undefined) {
-            serializationObject.checkCollisions = camera['checkCollisions'];
-        }
-        if (camera['applyGravity'] !== undefined) {
-            serializationObject.applyGravity = camera['applyGravity'];
-        }
+        serializationObject.checkCollisions = camera['checkCollisions'] || false;
+        serializationObject.applyGravity = camera['applyGravity'] || false;
         if (camera['ellipsoid']) {
         if (camera['ellipsoid']) {
             serializationObject.ellipsoid = camera['ellipsoid'].asArray();
             serializationObject.ellipsoid = camera['ellipsoid'].asArray();
         }
         }

+ 7 - 7
Babylon/Tools/babylon.sceneSerializer.ts

@@ -55,7 +55,7 @@
     var serializeCamera = (camera: Camera): any => {
     var serializeCamera = (camera: Camera): any => {
         var serializationObject:any = {};
         var serializationObject:any = {};
         serializationObject.name = camera.name;
         serializationObject.name = camera.name;
-        serializationObject.tags = Tags.GetTags(camera);
+        serializationObject.tags = Tags.GetTags(camera) || [];
         serializationObject.id = camera.id;
         serializationObject.id = camera.id;
         serializationObject.position = camera.position.asArray();
         serializationObject.position = camera.position.asArray();
 
 
@@ -125,6 +125,10 @@
             serializationObject.speed = camera['speed'];
             serializationObject.speed = camera['speed'];
         }
         }
 
 
+        if (camera['target'] && camera['target'] instanceof Vector3) {
+            serializationObject.target = camera['target'].asArray();
+        }
+
         // Target
         // Target
         if (camera['rotation'] && camera['rotation'] instanceof Vector3) {
         if (camera['rotation'] && camera['rotation'] instanceof Vector3) {
             serializationObject.rotation = camera['rotation'].asArray();
             serializationObject.rotation = camera['rotation'].asArray();
@@ -135,12 +139,8 @@
             serializationObject.lockedTargetId = camera['lockedTarget'].id;
             serializationObject.lockedTargetId = camera['lockedTarget'].id;
         }
         }
 
 
-        if (camera['checkCollisions'] !== undefined) {
-            serializationObject.checkCollisions = camera['checkCollisions'];
-        }
-        if (camera['applyGravity'] !== undefined) {
-            serializationObject.applyGravity = camera['applyGravity'];
-        }
+        serializationObject.checkCollisions = camera['checkCollisions'] || false;
+        serializationObject.applyGravity = camera['applyGravity'] || false;
 
 
         if (camera['ellipsoid']) {
         if (camera['ellipsoid']) {
             serializationObject.ellipsoid = camera['ellipsoid'].asArray();
             serializationObject.ellipsoid = camera['ellipsoid'].asArray();