Kaynağa Gözat

Simple observers configuration

Raanan Weber 7 yıl önce
ebeveyn
işleme
2e2d358d04

+ 11 - 3
Viewer/src/configuration/configuration.ts

@@ -13,7 +13,8 @@ export interface ViewerConfiguration {
         mapper?: string; // json (default), html, yaml, xml, etc'. if not provided, file extension will be used.
     };
 
-    // native (!!!) javascript events. Mainly used in the JSON-format.
+    // Deprecated
+    /*// native (!!!) javascript events. Mainly used in the JSON-format.
     // those events will be triggered by the container element (the <babylon> tag);
     events?: {
         load: boolean | string;
@@ -23,8 +24,15 @@ export interface ViewerConfiguration {
         pointerup: boolean | string;
         pointermove: boolean | string;
         // load: 'onViewerLoaded' // will trigger the event prefix-onViewerLoaded instead of prefix-onLoad (and ONLY this event).
-    } | boolean; //events: true - fire all events
-    eventPrefix?: string;
+    } | boolean; //events: true - fire all events*/
+    //eventPrefix?: string;
+
+    // names of functions in the window context.
+    observers?: {
+        onEngineInit?: string;
+        onSceneInit?: string;
+        onModelLoaded?: string;
+    }
 
     canvasElement?: string; // if there is a need to override the standard implementation - ID of HTMLCanvasElement
 

+ 2 - 2
Viewer/src/configuration/types/default.ts

@@ -2,8 +2,8 @@ import { ViewerConfiguration } from './../configuration';
 
 export let defaultConfiguration: ViewerConfiguration = {
     version: "0.1",
-    eventPrefix: 'babylonviewer-',
-    events: true,
+    //eventPrefix: 'babylonviewer-',
+    //events: true,
     templates: {
         main: {
             html: require("../../../assets/templates/default/defaultTemplate.html")

+ 12 - 3
Viewer/src/viewer/viewer.ts

@@ -31,6 +31,18 @@ export abstract class AbstractViewer {
         this.onSceneInitObservable = new PromiseObservable();
         this.onEngineInitObservable = new PromiseObservable();
         this.onModelLoadedObservable = new PromiseObservable();
+        // adding preconfigured functions
+        if (this.configuration.observers) {
+            if (this.configuration.observers.onEngineInit) {
+                this.onEngineInitObservable.add(window[this.configuration.observers.onEngineInit]);
+            }
+            if (this.configuration.observers.onSceneInit) {
+                this.onEngineInitObservable.add(window[this.configuration.observers.onSceneInit]);
+            }
+            if (this.configuration.observers.onModelLoaded) {
+                this.onEngineInitObservable.add(window[this.configuration.observers.onModelLoaded]);
+            }
+        }
 
         // add this viewer to the viewer manager
         viewerManager.addViewer(this);
@@ -152,7 +164,4 @@ export abstract class AbstractViewer {
             });
         });
     }
-
-    public abstract initEnvironment(): Promise<Scene>;
-
 }