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

Update sandbox to create arcrotatecamera if needed

David Catuhe 8 лет назад
Родитель
Сommit
905e2744dc

Разница между файлами не показана из-за своего большого размера
+ 5646 - 5642
dist/preview release/babylon.d.ts


Разница между файлами не показана из-за своего большого размера
+ 5646 - 5642
dist/preview release/babylon.module.d.ts


+ 0 - 3
sandbox/index-local.html

@@ -36,9 +36,6 @@
                 <li id="btnFullscreen">
                     <img src="./Assets/BtnFullscreen.png" alt="Switch the scene to full screen" title="Switch the scene to full screen" />
                 </li>
-                <li id="btnCamera">
-                    <img src="./Assets/BtnCamera.png" alt="Toggle the camera" title="Toggle the camera" />
-                </li>
                 <li id="btnPerf">
                     <img src="./Assets/BtnPerf.png" alt="Display inspector" title="Display inspector" />
                 </li>

+ 3 - 3
sandbox/index.css

@@ -191,7 +191,7 @@ a {
     background-position: center;
 }
 
-#btnFullscreen , #btnCamera {
+#btnFullscreen {
     margin-top: 10px;
     margin-right: 25px;
 }
@@ -253,12 +253,12 @@ li {
     -webkit-transform: translateX(120%);
 }
 
-#btnFullscreen, #btnCamera, #btnPerf, #btnFiles {
+#btnFullscreen, #btnPerf, #btnFiles {
      -webkit-transition: -webkit-transform 0.15s ease-in-out;
      transition: transform 0.15s ease-in-out;
 }
 
-#btnFullscreen:hover, #btnCamera:hover, #btnPerf:hover, #btnFiles:hover {
+#btnFullscreen:hover, #btnPerf:hover, #btnFiles:hover {
     -webkit-transform: scale(0.9);
     transform: scale(0.9);
 }

+ 0 - 3
sandbox/index.html

@@ -32,9 +32,6 @@
                 <li id="btnFullscreen">
                     <img src="./Assets/BtnFullscreen.png" alt="Switch the scene to full screen" title="Switch the scene to full screen" />
                 </li>
-                <li id="btnCamera">
-                    <img src="./Assets/BtnCamera.png" alt="Toggle the camera" title="Toggle the camera" />
-                </li>
                 <li id="btnPerf">
                     <img src="./Assets/BtnPerf.png" alt="Display debug & performance layer" title="Display debug & performance layer" />
                 </li>

+ 29 - 50
sandbox/index.js

@@ -17,9 +17,6 @@ if (BABYLON.Engine.isSupported()) {
     var currentHelpCounter;
     var currentScene;
     var enableDebugLayer = false;
-    var enableArcRotateCamera = false;
-    var arcRotateCamera;
-    var defaultCamera;
 
     currentHelpCounter = localStorage.getItem("helpcounter");
 
@@ -50,6 +47,13 @@ if (BABYLON.Engine.isSupported()) {
         document.title = "BabylonJS - " + sceneFile.name;
         // Fix for IE, otherwise it will change the default filter for files selection after first use
         htmlInput.value = "";
+
+        // Attach camera to canvas inputs
+        if (!currentScene.activeCamera || currentScene.lights.length === 0) {     
+            currentScene.createDefaultCameraOrLight(true);
+        }
+        currentScene.activeCamera.attachControl(canvas);
+
         // In case of error during loading, meshes will be empty and clearColor is set to red
         if (currentScene.meshes.length === 0 && currentScene.clearColor.r === 1 && currentScene.clearColor.g === 0 && currentScene.clearColor.b === 0) {
             document.getElementById("logo").className = "";
@@ -71,19 +75,20 @@ if (BABYLON.Engine.isSupported()) {
                 currentScene.activeCamera.keysRight.push(69); // E
                 currentScene.activeCamera.keysRight.push(68); // D
             }
-            defaultCamera = currentScene.activeCamera;
-            var worldExtends = currentScene.getWorldExtends();
-            var worldCenter = worldExtends.min.add(worldExtends.max.subtract(worldExtends.min).scale(0.5));
-            arcRotateCamera = new BABYLON.ArcRotateCamera("arcRotateCamera", 0, 0, 10, BABYLON.Vector3.Zero(), currentScene);
-            arcRotateCamera.setPosition(new BABYLON.Vector3(worldCenter.x, worldCenter.y, worldExtends.min.z - (worldExtends.max.z - worldExtends.min.z)));
-            arcRotateCamera.setTarget(worldCenter);
-            arcRotateCamera.wheelPrecision = 100.0;
-            arcRotateCamera.minZ = 0.1;
-            arcRotateCamera.maxZ = 1000;
-            if(enableArcRotateCamera){
-                currentScene.activeCamera = arcRotateCamera;
-                currentScene.activeCamera.attachControl(canvas);
-            }
+
+            // defaultCamera = currentScene.activeCamera;
+            // var worldExtends = currentScene.getWorldExtends();
+            // var worldCenter = worldExtends.min.add(worldExtends.max.subtract(worldExtends.min).scale(0.5));
+            // arcRotateCamera = new BABYLON.ArcRotateCamera("arcRotateCamera", 0, 0, 10, BABYLON.Vector3.Zero(), currentScene);
+            // arcRotateCamera.setPosition(new BABYLON.Vector3(worldCenter.x, worldCenter.y, worldExtends.min.z - (worldExtends.max.z - worldExtends.min.z)));
+            // arcRotateCamera.setTarget(worldCenter);
+            // arcRotateCamera.wheelPrecision = 100.0;
+            // arcRotateCamera.minZ = 0.1;
+            // arcRotateCamera.maxZ = 1000;
+            // if(enableArcRotateCamera){
+            //     currentScene.activeCamera = arcRotateCamera;
+            //     currentScene.activeCamera.attachControl(canvas);
+            // }
         }
     };
 
@@ -98,25 +103,14 @@ if (BABYLON.Engine.isSupported()) {
     });
     htmlInput.addEventListener('change', function (event) {
         var filestoLoad;
-            // Handling data transfer via drag'n'drop
-            if (event && event.dataTransfer && event.dataTransfer.files) {
-                filesToLoad = event.dataTransfer.files;
-            }
-            // Handling files from input files
-            if (event && event.target && event.target.files) {
-                filesToLoad = event.target.files;
-            }
-            if (filesToLoad && filesToLoad.length > 0) {
-            enableArcRotateCamera= false;
-            for (var i = 0; i < filesToLoad.length; i++) {
-                    var extension = filesToLoad[i].name.split('.').pop();
-                    if (extension === "gltf" || extension === "glb")
-                    {       
-                         enableArcRotateCamera= true;
-                         break;
-                    }
-                }
-            }
+        // Handling data transfer via drag'n'drop
+        if (event && event.dataTransfer && event.dataTransfer.files) {
+            filesToLoad = event.dataTransfer.files;
+        }
+        // Handling files from input files
+        if (event && event.target && event.target.files) {
+            filesToLoad = event.target.files;
+        }
         filesInput.loadFiles(event);
     }, false);
     btnFullScreen.addEventListener('click', function () {
@@ -134,21 +128,6 @@ if (BABYLON.Engine.isSupported()) {
             }
         }
     }, false);
-    btnCamera.addEventListener('click', function () {
-        if (currentScene) {
-            if (!enableArcRotateCamera) {
-                currentScene.activeCamera = arcRotateCamera;
-                currentScene.activeCamera.attachControl(canvas);
-                enableArcRotateCamera = true;
-            }
-            else {
-                currentScene.activeCamera = defaultCamera;
-                currentScene.activeCamera.attachControl(canvas);
-                enableArcRotateCamera = false;
-            }
-        }
-    }, false);
-
     // The help tips will be displayed only 5 times
     if (currentHelpCounter < 5) {
         help01.className = "help shown";

+ 0 - 5
src/Tools/babylon.filesInput.ts

@@ -116,11 +116,6 @@
 
                     // Wait for textures and shaders to be ready
                     that._currentScene.executeWhenReady(() => {
-                        // Attach camera to canvas inputs
-                        if (!that._currentScene.activeCamera || that._currentScene.lights.length === 0) {     
-                            that._currentScene.createDefaultCameraOrLight();
-                        }
-                        that._currentScene.activeCamera.attachControl(that._canvas);
 
                         if (that._sceneLoadedCallback) {
                             that._sceneLoadedCallback(this._sceneFileToLoad, that._currentScene);

+ 4 - 2
src/babylon.scene.ts

@@ -3510,8 +3510,8 @@
 
                 if (createArcRotateCamera) {
                     camera = new ArcRotateCamera("default camera", 0, 0, 10, Vector3.Zero(), this);
-
                     camera.setPosition(new Vector3(worldCenter.x, worldCenter.y, worldExtends.min.z - (worldExtends.max.z - worldExtends.min.z)));
+                    camera.lowerRadiusLimit = 0.5;
                     camera.setTarget(worldCenter);
                 } else {
                     camera = new FreeCamera("default camera", Vector3.Zero(), this);
@@ -3519,7 +3519,9 @@
                     camera.position = new Vector3(worldCenter.x, worldCenter.y, worldExtends.min.z - (worldExtends.max.z - worldExtends.min.z));
                     camera.setTarget(worldCenter);
                 }
-
+                camera.minZ = 0.1;
+                var maxDist = worldExtends.max.subtract(worldExtends.min).length();
+                camera.wheelPrecision = 100.0 / maxDist;
                 this.activeCamera = camera;
             }
         }