Преглед изворни кода

add onLoadError for photodome

David Catuhe пре 7 година
родитељ
комит
4b63e18d3d

Разлика између датотеке није приказан због своје велике величине
+ 7888 - 7883
Playground/babylon.d.txt


Разлика између датотеке није приказан због своје велике величине
+ 7888 - 7883
dist/preview release/babylon.d.ts


Разлика између датотеке није приказан због своје велике величине
+ 1 - 1
dist/preview release/babylon.js


Разлика између датотеке није приказан због своје велике величине
+ 18 - 6
dist/preview release/babylon.max.js


Разлика између датотеке није приказан због своје велике величине
+ 18 - 6
dist/preview release/babylon.no-module.max.js


Разлика између датотеке није приказан због своје велике величине
+ 1 - 1
dist/preview release/babylon.worker.js


Разлика између датотеке није приказан због своје велике величине
+ 18 - 6
dist/preview release/es6.js


+ 7 - 0
dist/preview release/viewer/babylon.viewer.d.ts

@@ -911,6 +911,13 @@ declare module BabylonViewer {
     }
 }
 declare module BabylonViewer {
+    /**
+      *
+      * @param name the name of the custom optimizer configuration
+      * @param upgrade set to true if you want to upgrade optimizer and false if you want to degrade
+      */
+    export function getCustomOptimizerByName(name: string, upgrade?: boolean): (sceneManager: SceneManager) => boolean;
+    export function registerCustomOptimizer(name: string, optimizer: (sceneManager: SceneManager) => boolean): void;
 }
 declare module BabylonViewer {
     /**

Разлика између датотеке није приказан због своје велике величине
+ 1 - 1
dist/preview release/viewer/babylon.viewer.js


Разлика између датотеке није приказан због своје велике величине
+ 1 - 1
dist/preview release/viewer/babylon.viewer.max.js


+ 8 - 1
dist/preview release/viewer/babylon.viewer.module.d.ts

@@ -977,7 +977,14 @@ declare module 'babylonjs-viewer/templating/viewerTemplatePlugin' {
 }
 
 declare module 'babylonjs-viewer/optimizer/custom' {
-    
+    import { SceneManager } from "babylonjs-viewer/managers/sceneManager";
+    /**
+      *
+      * @param name the name of the custom optimizer configuration
+      * @param upgrade set to true if you want to upgrade optimizer and false if you want to degrade
+      */
+    export function getCustomOptimizerByName(name: string, upgrade?: boolean): (sceneManager: SceneManager) => boolean;
+    export function registerCustomOptimizer(name: string, optimizer: (sceneManager: SceneManager) => boolean): void;
 }
 
 declare module 'babylonjs-viewer/initializer' {

+ 19 - 6
src/Helpers/babylon.photoDome.ts

@@ -34,8 +34,12 @@ module BABYLON {
                 this._photoTexture.wrapV = Texture.CLAMP_ADDRESSMODE;
                 this._material.reflectionTexture = this._photoTexture;
             }
-        }        
-
+        }      
+        
+        /**
+         * Observable raised when an error occured while loading the 360 image
+         */
+        public onLoadErrorObservable = new Observable<string>();
 
         /**
          * The skybox material
@@ -61,14 +65,15 @@ module BABYLON {
         /**
          * Create an instance of this class and pass through the parameters to the relevant classes, Texture, StandardMaterial, and Mesh.
          * @param name Element's name, child elements will append suffixes for their own names.
-         * @param urlsOfPhoto define the url of the photo to display
-         * @param options An object containing optional or exposed sub element properties
+         * @param urlsOfPhoto defines the url of the photo to display
+         * @param options defines an object containing optional or exposed sub element properties
+         * @param onError defines a callback called when an error occured while loading the texture
          */
         constructor(name: string, urlOfPhoto: string, options: {
             resolution?: number,
             size?: number,
             useDirectMapping?: boolean
-        }, scene: Scene) {
+        }, scene: Scene, onError: Nullable<(message?: string, exception?: any) => void> = null) {
             super(name, scene);
 
             // set defaults and manage values
@@ -93,7 +98,13 @@ module BABYLON {
             material.useEquirectangularFOV = true;
             material.fovMultiplier = 1.0;
 
-            this.photoTexture = new Texture(urlOfPhoto, scene, true, !this._useDirectMapping);
+            this.photoTexture = new Texture(urlOfPhoto, scene, true, !this._useDirectMapping, undefined, undefined, (message, exception) => {
+                this.onLoadErrorObservable.notifyObservers(message || "Unknown error occured");
+
+                if (onError) {
+                    onError(message, exception);
+                }
+            });
 
             this.photoTexture.onLoadObservable.addOnce(()=> {
                 this._setReady(true);
@@ -114,6 +125,8 @@ module BABYLON {
             this._mesh.dispose();
             this._material.dispose();
 
+            this.onLoadErrorObservable.clear();
+
             super.dispose(doNotRecurse, disposeMaterialAndTextures);
         }
     }