Explorar o código

Revert "Async Native JS Events"

This reverts commit 33f9bd415ad4fb00cb958f4c6423d752fa9752f7.
Raanan Weber %!s(int64=10) %!d(string=hai) anos
pai
achega
1c52892fb6

+ 2 - 2
Babylon/Actions/babylon.actionManager.js

@@ -8,9 +8,9 @@
             this.meshUnderPointer = meshUnderPointer;
             this.sourceEvent = sourceEvent;
         }
-        ActionEvent.CreateNew = function (source, sourceEvent) {
+        ActionEvent.CreateNew = function (source) {
             var scene = source.getScene();
-            return new ActionEvent(source, scene.pointerX, scene.pointerY, scene.meshUnderPointer, sourceEvent);
+            return new ActionEvent(source, scene.pointerX, scene.pointerY, scene.meshUnderPointer);
         };
 
         ActionEvent.CreateNewFromScene = function (scene, evt) {

+ 2 - 2
Babylon/Actions/babylon.actionManager.ts

@@ -5,9 +5,9 @@
             
         }
 
-        public static CreateNew(source: AbstractMesh, sourceEvent?: Event): ActionEvent {
+        public static CreateNew(source: AbstractMesh): ActionEvent {
             var scene = source.getScene();
-            return new ActionEvent(source, scene.pointerX, scene.pointerY, scene.meshUnderPointer, sourceEvent);
+            return new ActionEvent(source, scene.pointerX, scene.pointerY, scene.meshUnderPointer);
         }
 
         public static CreateNewFromScene(scene: Scene, evt:Event): ActionEvent {

+ 3 - 2
Babylon/Cameras/babylon.camera.js

@@ -31,7 +31,7 @@ var BABYLON;
             this._postProcesses = new Array();
             this._postProcessesTakenIndices = [];
 
-            scene.addCamera(this);
+            scene.cameras.push(this);
 
             if (!scene.activeCamera) {
                 scene.activeCamera = this;
@@ -287,7 +287,8 @@ var BABYLON;
 
         Camera.prototype.dispose = function () {
             // Remove from scene
-            this.getScene().removeCamera(this);
+            var index = this.getScene().cameras.indexOf(this);
+            this.getScene().cameras.splice(index, 1);
 
             for (var i = 0; i < this._postProcessesTakenIndices.length; ++i) {
                 this._postProcesses[this._postProcessesTakenIndices[i]].dispose(this);

+ 3 - 2
Babylon/Cameras/babylon.camera.ts

@@ -29,7 +29,7 @@
         constructor(name: string, public position: Vector3, scene: Scene) {
             super(name, scene);
 
-            scene.addCamera(this);
+            scene.cameras.push(this);
 
             if (!scene.activeCamera) {
                 scene.activeCamera = this;
@@ -303,7 +303,8 @@
 
         public dispose(): void {
             // Remove from scene
-            this.getScene().removeCamera(this);
+            var index = this.getScene().cameras.indexOf(this);
+            this.getScene().cameras.splice(index, 1);
 
             // Postprocesses
             for (var i = 0; i < this._postProcessesTakenIndices.length; ++i) {

+ 1 - 1
Babylon/Culling/babylon.boundingBox.js

@@ -171,4 +171,4 @@
     })();
     BABYLON.BoundingBox = BoundingBox;
 })(BABYLON || (BABYLON = {}));
-//# sourceMappingURL=babylon.BoundingBox.js.map
+//# sourceMappingURL=babylon.boundingBox.js.map

+ 3 - 2
Babylon/Lights/babylon.light.js

@@ -19,7 +19,7 @@ var BABYLON;
             this._excludedMeshesIds = new Array();
             this._includedOnlyMeshesIds = new Array();
 
-            scene.addLight(this);
+            scene.lights.push(this);
         }
         Light.prototype.getShadowGenerator = function () {
             return this._shadowGenerator;
@@ -73,7 +73,8 @@ var BABYLON;
             }
 
             // Remove from scene
-            this.getScene().removeLight(this);
+            var index = this.getScene().lights.indexOf(this);
+            this.getScene().lights.splice(index, 1);
         };
         return Light;
     })(BABYLON.Node);

+ 3 - 2
Babylon/Lights/babylon.light.ts

@@ -15,7 +15,7 @@
         constructor(name: string, scene: Scene) {
             super(name, scene);
 
-            scene.addLight(this);
+            scene.lights.push(this);
         }
 
         public getShadowGenerator(): ShadowGenerator {
@@ -70,7 +70,8 @@
             }
 
             // Remove from scene
-            this.getScene().removeLight(this);
+            var index = this.getScene().lights.indexOf(this);
+            this.getScene().lights.splice(index, 1);
         }
     }
 } 

+ 7 - 3
Babylon/Mesh/babylon.abstractMesh.js

@@ -62,7 +62,7 @@ var BABYLON;
             this._renderId = 0;
             this._intersectionsInProgress = new Array();
 
-            scene.addMesh(this);
+            scene.meshes.push(this);
         }
         Object.defineProperty(AbstractMesh, "BILLBOARDMODE_NONE", {
             get: function () {
@@ -794,10 +794,14 @@ var BABYLON;
             this.releaseSubMeshes();
 
             // Remove from scene
-            this.getScene().removeMesh(this);
+            var index = this.getScene().meshes.indexOf(this);
+            if (index != -1) {
+                // Remove from the scene if mesh found
+                this.getScene().meshes.splice(index, 1);
+            }
 
             if (!doNotRecurse) {
-                for (var index = 0; index < this.getScene().particleSystems.length; index++) {
+                for (index = 0; index < this.getScene().particleSystems.length; index++) {
                     if (this.getScene().particleSystems[index].emitter == this) {
                         this.getScene().particleSystems[index].dispose();
                         index--;

+ 7 - 3
Babylon/Mesh/babylon.abstractMesh.ts

@@ -100,7 +100,7 @@
         constructor(name: string, scene: Scene) {
             super(name, scene);
 
-            scene.addMesh(this);
+            scene.meshes.push(this);
         }
 
         // Methods
@@ -786,11 +786,15 @@
             this.releaseSubMeshes();
 
             // Remove from scene
-            this.getScene().removeMesh(this);
+            var index = this.getScene().meshes.indexOf(this);
+            if (index != -1) {
+                // Remove from the scene if mesh found 
+                this.getScene().meshes.splice(index, 1);
+            }
 
             if (!doNotRecurse) {
                 // Particles
-                for (var index = 0; index < this.getScene().particleSystems.length; index++) {
+                for (index = 0; index < this.getScene().particleSystems.length; index++) {
                     if (this.getScene().particleSystems[index].emitter == this) {
                         this.getScene().particleSystems[index].dispose();
                         index--;

+ 0 - 1
Babylon/babylon.node.ts

@@ -3,7 +3,6 @@
         public parent: Node;
         public name: string;
         public id: string;
-        public htmlId: string;
         public state = "";
 
         public animations = new Array<Animation>();

+ 16 - 109
Babylon/babylon.scene.js

@@ -56,7 +56,6 @@
             this.importedMeshesFiles = new Array();
             this._actionManagers = new Array();
             this._meshesForIntersections = new BABYLON.SmartArray(256);
-            this.asyncEventTriggers = true;
             // Procedural textures
             this.proceduralTexturesEnabled = true;
             this._proceduralTextures = new Array();
@@ -207,8 +206,8 @@
                 _this._updatePointerPosition(evt);
 
                 var pickResult = _this.pick(_this._pointerX, _this._pointerY, function (mesh) {
-                    return mesh.isPickable && mesh.isVisible && mesh.isReady();
-                } /* && mesh.actionManager && mesh.actionManager.hasPointerTriggers*/ , false, _this.cameraToUseForPointers);
+                    return mesh.isPickable && mesh.isVisible && mesh.isReady() && mesh.actionManager && mesh.actionManager.hasPointerTriggers;
+                }, false, _this.cameraToUseForPointers);
 
                 if (pickResult.hit) {
                     _this._meshUnderPointer = pickResult.pickedMesh;
@@ -227,7 +226,7 @@
 
                 if (!_this.onPointerDown) {
                     predicate = function (mesh) {
-                        return mesh.isPickable && mesh.isVisible && mesh.isReady();
+                        return mesh.isPickable && mesh.isVisible && mesh.isReady() && mesh.actionManager && mesh.actionManager.hasPickTriggers;
                     };
                 }
 
@@ -236,21 +235,19 @@
                 var pickResult = _this.pick(_this._pointerX, _this._pointerY, predicate, false, _this.cameraToUseForPointers);
 
                 if (pickResult.hit) {
-                    var actionEvent = BABYLON.ActionEvent.CreateNew(pickResult.pickedMesh, evt);
-                    _this._triggerJsEvent("pick", actionEvent, pickResult.pickedMesh.htmlId);
-                    if (pickResult.pickedMesh.actionManager && pickResult.pickedMesh.actionManager.hasPickTriggers) {
+                    if (pickResult.pickedMesh.actionManager) {
                         switch (evt.button) {
                             case 0:
-                                pickResult.pickedMesh.actionManager.processTrigger(BABYLON.ActionManager.OnLeftPickTrigger, actionEvent);
+                                pickResult.pickedMesh.actionManager.processTrigger(BABYLON.ActionManager.OnLeftPickTrigger, BABYLON.ActionEvent.CreateNew(pickResult.pickedMesh));
                                 break;
                             case 1:
-                                pickResult.pickedMesh.actionManager.processTrigger(BABYLON.ActionManager.OnCenterPickTrigger, actionEvent);
+                                pickResult.pickedMesh.actionManager.processTrigger(BABYLON.ActionManager.OnCenterPickTrigger, BABYLON.ActionEvent.CreateNew(pickResult.pickedMesh));
                                 break;
                             case 2:
-                                pickResult.pickedMesh.actionManager.processTrigger(BABYLON.ActionManager.OnRightPickTrigger, actionEvent);
+                                pickResult.pickedMesh.actionManager.processTrigger(BABYLON.ActionManager.OnRightPickTrigger, BABYLON.ActionEvent.CreateNew(pickResult.pickedMesh));
                                 break;
                         }
-                        pickResult.pickedMesh.actionManager.processTrigger(BABYLON.ActionManager.OnPickTrigger, actionEvent);
+                        pickResult.pickedMesh.actionManager.processTrigger(BABYLON.ActionManager.OnPickTrigger, BABYLON.ActionEvent.CreateNew(pickResult.pickedMesh));
                     }
                 }
 
@@ -260,18 +257,14 @@
             };
 
             this._onKeyDown = function (evt) {
-                var actionEvent = BABYLON.ActionEvent.CreateNewFromScene(_this, evt);
-                _this._triggerJsEvent("keyDown", actionEvent);
                 if (_this.actionManager) {
-                    _this.actionManager.processTrigger(BABYLON.ActionManager.OnKeyDownTrigger, actionEvent);
+                    _this.actionManager.processTrigger(BABYLON.ActionManager.OnKeyDownTrigger, BABYLON.ActionEvent.CreateNewFromScene(_this, evt));
                 }
             };
 
             this._onKeyUp = function (evt) {
-                var actionEvent = BABYLON.ActionEvent.CreateNewFromScene(_this, evt);
-                _this._triggerJsEvent("keyUp", actionEvent);
                 if (_this.actionManager) {
-                    _this.actionManager.processTrigger(BABYLON.ActionManager.OnKeyUpTrigger, actionEvent);
+                    _this.actionManager.processTrigger(BABYLON.ActionManager.OnKeyUpTrigger, BABYLON.ActionEvent.CreateNewFromScene(_this, evt));
                 }
             };
 
@@ -283,16 +276,6 @@
             window.addEventListener("keyup", this._onKeyUp, false);
         };
 
-        Scene.prototype._triggerJsEvent = function (evt, eventData, htmlId) {
-            if (!this.asyncEventTriggers) {
-                return;
-            }
-            var newEvent = document.createEvent('CustomEvent');
-            newEvent.initCustomEvent(evt, true, true, eventData);
-            var htmlElement = htmlId ? document.querySelector("#" + htmlId) : this._engine.getRenderingCanvas();
-            htmlElement.dispatchEvent(newEvent);
-        };
-
         Scene.prototype.detachControl = function () {
             var eventPrefix = BABYLON.Tools.GetPointerPrefix();
             this._engine.getRenderingCanvas().removeEventListener(eventPrefix + "move", this._onPointerMove);
@@ -485,70 +468,6 @@
             this._viewMatrix.multiplyToRef(this._projectionMatrix, this._transformMatrix);
         };
 
-        //Node adding
-        Scene.prototype.addMesh = function (mesh) {
-            this.meshes.push(mesh);
-            this._generateHtmlElement("mesh", mesh);
-        };
-
-        Scene.prototype.removeMesh = function (mesh) {
-            var index = this.meshes.indexOf(mesh);
-            if (index != -1) {
-                this.meshes.splice(index, 1);
-            }
-            this._removeHtmlElement("mesh", mesh.htmlId);
-        };
-
-        Scene.prototype.addLight = function (light) {
-            this.lights.push(light);
-            this._generateHtmlElement("light", light);
-        };
-
-        Scene.prototype.removeLight = function (light) {
-            var index = this.lights.indexOf(light);
-            if (index != -1) {
-                this.lights.splice(index, 1);
-            }
-            this._removeHtmlElement("light", light.htmlId);
-        };
-
-        Scene.prototype.addCamera = function (camera) {
-            this.cameras.push(camera);
-            this._generateHtmlElement("camera", camera);
-        };
-
-        Scene.prototype.removeCamera = function (camera) {
-            var index = this.cameras.indexOf(camera);
-            if (index != -1) {
-                this.cameras.splice(index, 1);
-            }
-            this._removeHtmlElement("camera", camera.htmlId);
-        };
-
-        Scene.prototype._generateHtmlElement = function (kind, node) {
-            var element = document.createElement(kind);
-            var htmlId = kind + "-" + node.id;
-            var idNumeration = 0;
-            if (document.getElementById(htmlId)) {
-                while (document.getElementById(htmlId + "_" + idNumeration++)) {
-                }
-
-                htmlId = htmlId + "_" + idNumeration;
-                BABYLON.Tools.Warn("Extra " + kind + " with the same id was added with id " + htmlId);
-            }
-            node.htmlId = htmlId;
-            element.id = htmlId;
-            var canvas = this.getEngine().getRenderingCanvas();
-            canvas.insertBefore(element, null);
-            this._triggerJsEvent("nodeAdded", { kind: kind, originalId: node.id, htmlId: htmlId });
-        };
-
-        Scene.prototype._removeHtmlElement = function (kind, id) {
-            var element = document.getElementById(id);
-            element.parentElement.removeChild(element);
-            this._triggerJsEvent("nodeRemoved", { kind: kind, id: id });
-        };
-
         // Methods
         Scene.prototype.setActiveCameraByID = function (id) {
             var camera = this.getCameraByID(id);
@@ -1033,14 +952,10 @@
                         var currentIntersectionInProgress = sourceMesh._intersectionsInProgress.indexOf(otherMesh);
 
                         if (areIntersecting && currentIntersectionInProgress === -1 && action.trigger == BABYLON.ActionManager.OnIntersectionEnterTrigger) {
-                            var actionEvent = BABYLON.ActionEvent.CreateNew(sourceMesh);
-                            this._triggerJsEvent("intersectionEnter", actionEvent, sourceMesh.htmlId);
-                            sourceMesh.actionManager.processTrigger(BABYLON.ActionManager.OnIntersectionEnterTrigger, actionEvent);
+                            sourceMesh.actionManager.processTrigger(BABYLON.ActionManager.OnIntersectionEnterTrigger, BABYLON.ActionEvent.CreateNew(sourceMesh));
                             sourceMesh._intersectionsInProgress.push(otherMesh);
                         } else if (!areIntersecting && currentIntersectionInProgress > -1 && action.trigger == BABYLON.ActionManager.OnIntersectionExitTrigger) {
-                            var actionEvent = BABYLON.ActionEvent.CreateNew(sourceMesh);
-                            this._triggerJsEvent("intersectionExit", actionEvent, sourceMesh.htmlId);
-                            sourceMesh.actionManager.processTrigger(BABYLON.ActionManager.OnIntersectionExitTrigger, actionEvent);
+                            sourceMesh.actionManager.processTrigger(BABYLON.ActionManager.OnIntersectionExitTrigger, BABYLON.ActionEvent.CreateNew(sourceMesh));
 
                             var indexOfOther = sourceMesh._intersectionsInProgress.indexOf(otherMesh);
 
@@ -1423,21 +1338,13 @@
                 return;
             }
 
-            if (this._pointerOverMesh) {
-                var actionEvent = BABYLON.ActionEvent.CreateNew(this._pointerOverMesh);
-                this._triggerJsEvent("pointerOut", actionEvent, this._pointerOverMesh.htmlId);
-                if (this._pointerOverMesh.actionManager && this._pointerOverMesh.actionManager.hasPointerTriggers) {
-                    this._pointerOverMesh.actionManager.processTrigger(BABYLON.ActionManager.OnPointerOutTrigger, actionEvent);
-                }
+            if (this._pointerOverMesh && this._pointerOverMesh.actionManager) {
+                this._pointerOverMesh.actionManager.processTrigger(BABYLON.ActionManager.OnPointerOutTrigger, BABYLON.ActionEvent.CreateNew(this._pointerOverMesh));
             }
 
             this._pointerOverMesh = mesh;
-            if (this._pointerOverMesh) {
-                actionEvent = BABYLON.ActionEvent.CreateNew(this._pointerOverMesh);
-                this._triggerJsEvent("pointerOver", actionEvent, this._pointerOverMesh.htmlId);
-                if (this._pointerOverMesh.actionManager && this._pointerOverMesh.actionManager.hasPointerTriggers) {
-                    this._pointerOverMesh.actionManager.processTrigger(BABYLON.ActionManager.OnPointerOverTrigger, actionEvent);
-                }
+            if (this._pointerOverMesh && this._pointerOverMesh.actionManager) {
+                this._pointerOverMesh.actionManager.processTrigger(BABYLON.ActionManager.OnPointerOverTrigger, BABYLON.ActionEvent.CreateNew(this._pointerOverMesh));
             }
         };
 

+ 17 - 114
Babylon/babylon.scene.ts

@@ -112,7 +112,6 @@
         public actionManager: ActionManager;
         public _actionManagers = new Array<ActionManager>();
         private _meshesForIntersections = new SmartArray<AbstractMesh>(256);
-        public asyncEventTriggers = true;
 
         // Procedural textures
         public proceduralTexturesEnabled = true;
@@ -282,7 +281,7 @@
                 this._updatePointerPosition(evt);
 
                 var pickResult = this.pick(this._pointerX, this._pointerY,
-                    (mesh: AbstractMesh): boolean => mesh.isPickable && mesh.isVisible && mesh.isReady()/* && mesh.actionManager && mesh.actionManager.hasPointerTriggers*/,
+                    (mesh: AbstractMesh): boolean => mesh.isPickable && mesh.isVisible && mesh.isReady() && mesh.actionManager && mesh.actionManager.hasPointerTriggers,
                     false,
                     this.cameraToUseForPointers);
 
@@ -304,7 +303,7 @@
 
                 if (!this.onPointerDown) {
                     predicate = (mesh: AbstractMesh): boolean => {
-                        return mesh.isPickable && mesh.isVisible && mesh.isReady()/* && mesh.actionManager && mesh.actionManager.hasPickTriggers*/;
+                        return mesh.isPickable && mesh.isVisible && mesh.isReady() && mesh.actionManager && mesh.actionManager.hasPickTriggers;
                     };
                 }
 
@@ -313,22 +312,20 @@
                 var pickResult = this.pick(this._pointerX, this._pointerY, predicate, false, this.cameraToUseForPointers);
 
                 if (pickResult.hit) {
-                    var actionEvent = ActionEvent.CreateNew(pickResult.pickedMesh, evt);
-                    this._triggerJsEvent("pick", actionEvent, pickResult.pickedMesh.htmlId);
-                    if (pickResult.pickedMesh.actionManager && pickResult.pickedMesh.actionManager.hasPickTriggers) {
+                    if (pickResult.pickedMesh.actionManager) {
                         switch (evt.button) {
                             case 0:
-                                pickResult.pickedMesh.actionManager.processTrigger(BABYLON.ActionManager.OnLeftPickTrigger, actionEvent);
+                                pickResult.pickedMesh.actionManager.processTrigger(BABYLON.ActionManager.OnLeftPickTrigger, ActionEvent.CreateNew(pickResult.pickedMesh));
                                 break;
                             case 1:
-                                pickResult.pickedMesh.actionManager.processTrigger(BABYLON.ActionManager.OnCenterPickTrigger, actionEvent);
+                                pickResult.pickedMesh.actionManager.processTrigger(BABYLON.ActionManager.OnCenterPickTrigger, ActionEvent.CreateNew(pickResult.pickedMesh));
                                 break;
                             case 2:
-                                pickResult.pickedMesh.actionManager.processTrigger(BABYLON.ActionManager.OnRightPickTrigger, actionEvent);
+                                pickResult.pickedMesh.actionManager.processTrigger(BABYLON.ActionManager.OnRightPickTrigger, ActionEvent.CreateNew(pickResult.pickedMesh));
                                 break;
                         }
-                        pickResult.pickedMesh.actionManager.processTrigger(BABYLON.ActionManager.OnPickTrigger, actionEvent);
-                    }                    
+                        pickResult.pickedMesh.actionManager.processTrigger(BABYLON.ActionManager.OnPickTrigger, ActionEvent.CreateNew(pickResult.pickedMesh));
+                    }
                 }
 
                 if (this.onPointerDown) {
@@ -337,21 +334,18 @@
             };
 
             this._onKeyDown = (evt: Event) => {
-                var actionEvent = ActionEvent.CreateNewFromScene(this, evt);
-                this._triggerJsEvent("keyDown", actionEvent);
                 if (this.actionManager) {
-                    this.actionManager.processTrigger(BABYLON.ActionManager.OnKeyDownTrigger, actionEvent);
+                    this.actionManager.processTrigger(BABYLON.ActionManager.OnKeyDownTrigger, ActionEvent.CreateNewFromScene(this, evt));
                 }
             };
 
             this._onKeyUp = (evt: Event) => {
-                var actionEvent = ActionEvent.CreateNewFromScene(this, evt);
-                this._triggerJsEvent("keyUp", actionEvent);
                 if (this.actionManager) {
-                    this.actionManager.processTrigger(BABYLON.ActionManager.OnKeyUpTrigger, actionEvent);
+                    this.actionManager.processTrigger(BABYLON.ActionManager.OnKeyUpTrigger, ActionEvent.CreateNewFromScene(this, evt));
                 }
             };
 
+
             var eventPrefix = Tools.GetPointerPrefix();
             this._engine.getRenderingCanvas().addEventListener(eventPrefix + "move", this._onPointerMove, false);
             this._engine.getRenderingCanvas().addEventListener(eventPrefix + "down", this._onPointerDown, false);
@@ -360,16 +354,6 @@
             window.addEventListener("keyup", this._onKeyUp, false);
         }
 
-        private _triggerJsEvent(evt: string, eventData: any, htmlId?: string) {
-            if (!this.asyncEventTriggers) {
-                return;
-            }
-            var newEvent: CustomEvent = <CustomEvent> document.createEvent('CustomEvent');
-            newEvent.initCustomEvent(evt /*+ "_babylon"*/, true, true, eventData);
-            var htmlElement = htmlId ? document.querySelector("#" + htmlId) : this._engine.getRenderingCanvas();
-            htmlElement.dispatchEvent(newEvent);
-        }
-
         public detachControl() {
             var eventPrefix = Tools.GetPointerPrefix();
             this._engine.getRenderingCanvas().removeEventListener(eventPrefix + "move", this._onPointerMove);
@@ -560,71 +544,6 @@
             this._viewMatrix.multiplyToRef(this._projectionMatrix, this._transformMatrix);
         }
 
-        //Node adding
-        public addMesh(mesh: AbstractMesh) {
-            this.meshes.push(mesh);
-            this._generateHtmlElement("mesh", mesh);
-        }
-
-        public removeMesh(mesh: AbstractMesh) {
-            var index = this.meshes.indexOf(mesh);
-            if (index != -1) {
-                this.meshes.splice(index, 1);
-            }
-            this._removeHtmlElement("mesh", mesh.htmlId);
-        }
-
-        public addLight(light: Light) {
-            this.lights.push(light);
-            this._generateHtmlElement("light", light);
-        }
-
-        public removeLight(light: Light) {
-            var index = this.lights.indexOf(light);
-            if (index != -1) {
-                this.lights.splice(index, 1);
-            }
-            this._removeHtmlElement("light", light.htmlId);
-        }
-
-        public addCamera(camera: Camera) {
-            this.cameras.push(camera);
-            this._generateHtmlElement("camera", camera);
-        }
-
-        public removeCamera(camera: Camera) {
-            var index = this.cameras.indexOf(camera);
-            if (index != -1) {
-                this.cameras.splice(index, 1);
-            }
-            this._removeHtmlElement("camera", camera.htmlId);
-        }
-
-        private _generateHtmlElement(kind: string, node:Node) {
-            var element: HTMLElement = document.createElement(kind);
-            var htmlId = kind + "-" + node.id;
-            var idNumeration = 0;
-            if (document.getElementById(htmlId)) {
-                while (document.getElementById(htmlId + "_" + idNumeration++)) {
-                    
-                }
-                
-                htmlId = htmlId + "_" + idNumeration;
-                Tools.Warn("Extra " + kind + " with the same id was added with id " + htmlId);
-            }
-            node.htmlId = htmlId;
-            element.id = htmlId;
-            var canvas = this.getEngine().getRenderingCanvas();
-            canvas.insertBefore(element, null);
-            this._triggerJsEvent("nodeAdded", { kind: kind, originalId:node.id, htmlId: htmlId });
-        }
-
-        private _removeHtmlElement(kind:string, id: string) {
-            var element = document.getElementById(id);
-            element.parentElement.removeChild(element);
-            this._triggerJsEvent("nodeRemoved", { kind: kind, id: id });
-        }
-
         // Methods
         public setActiveCameraByID(id: string): Camera {
             var camera = this.getCameraByID(id);
@@ -1110,15 +1029,11 @@
                         var currentIntersectionInProgress = sourceMesh._intersectionsInProgress.indexOf(otherMesh);
 
                         if (areIntersecting && currentIntersectionInProgress === -1 && action.trigger == ActionManager.OnIntersectionEnterTrigger) {
-                            var actionEvent = ActionEvent.CreateNew(sourceMesh);
-                            this._triggerJsEvent("intersectionEnter", actionEvent, sourceMesh.htmlId);
-                            sourceMesh.actionManager.processTrigger(ActionManager.OnIntersectionEnterTrigger, actionEvent);
+                            sourceMesh.actionManager.processTrigger(ActionManager.OnIntersectionEnterTrigger, ActionEvent.CreateNew(sourceMesh));
                             sourceMesh._intersectionsInProgress.push(otherMesh);
 
                         } else if (!areIntersecting && currentIntersectionInProgress > -1 && action.trigger == ActionManager.OnIntersectionExitTrigger) {
-                            var actionEvent = ActionEvent.CreateNew(sourceMesh);
-                            this._triggerJsEvent("intersectionExit", actionEvent, sourceMesh.htmlId);
-                            sourceMesh.actionManager.processTrigger(ActionManager.OnIntersectionExitTrigger, actionEvent);
+                            sourceMesh.actionManager.processTrigger(ActionManager.OnIntersectionExitTrigger, ActionEvent.CreateNew(sourceMesh));
 
                             var indexOfOther = sourceMesh._intersectionsInProgress.indexOf(otherMesh);
 
@@ -1504,26 +1419,14 @@
                 return;
             }
 
-            if (this._pointerOverMesh) {
-                var actionEvent = ActionEvent.CreateNew(this._pointerOverMesh);
-                this._triggerJsEvent("pointerOut", actionEvent, this._pointerOverMesh.htmlId);
-                if (this._pointerOverMesh.actionManager && this._pointerOverMesh.actionManager.hasPointerTriggers) {
-                    this._pointerOverMesh.actionManager.processTrigger(ActionManager.OnPointerOutTrigger, actionEvent);
-                }
+            if (this._pointerOverMesh && this._pointerOverMesh.actionManager) {
+                this._pointerOverMesh.actionManager.processTrigger(ActionManager.OnPointerOutTrigger, ActionEvent.CreateNew(this._pointerOverMesh));
             }
 
-            
-
             this._pointerOverMesh = mesh;
-            if (this._pointerOverMesh) {
-                actionEvent = ActionEvent.CreateNew(this._pointerOverMesh);
-                this._triggerJsEvent("pointerOver", actionEvent, this._pointerOverMesh.htmlId);
-                if (this._pointerOverMesh.actionManager && this._pointerOverMesh.actionManager.hasPointerTriggers) {
-                    this._pointerOverMesh.actionManager.processTrigger(ActionManager.OnPointerOverTrigger, actionEvent);
-                }
+            if (this._pointerOverMesh && this._pointerOverMesh.actionManager) {
+                this._pointerOverMesh.actionManager.processTrigger(ActionManager.OnPointerOverTrigger, ActionEvent.CreateNew(this._pointerOverMesh));
             }
-
-            
         }
 
         public getPointerOverMesh(): AbstractMesh {