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

avoid multiple event object creations

Trevor Baron 7 лет назад
Родитель
Сommit
ce7630a6f9

+ 3 - 1
src/Gizmos/babylon.axisDragGizmo.ts

@@ -53,6 +53,7 @@ module BABYLON {
 
             var currentSnapDragDistance = 0;
             var tmpVector = new Vector3();
+            var tmpSnapEvent = {snapDistance: 0};
             // Add drag behavior to handle events when the gizmo is dragged
             this._dragBehavior = new PointerDragBehavior({dragAxis: dragAxis});
             this._dragBehavior.moveAttached = false;
@@ -70,7 +71,8 @@ module BABYLON {
                             event.delta.normalizeToRef(tmpVector);
                             tmpVector.scaleInPlace(this.snapDistance*dragSteps);
                             this.attachedMesh.position.addInPlace(tmpVector);
-                            this.onSnapObservable.notifyObservers({snapDistance: this.snapDistance*dragSteps});
+                            tmpSnapEvent.snapDistance = this.snapDistance*dragSteps;
+                            this.onSnapObservable.notifyObservers(tmpSnapEvent);
                         }
                     }
                 }

+ 3 - 1
src/Gizmos/babylon.axisScaleGizmo.ts

@@ -57,6 +57,7 @@ module BABYLON {
 
             var currentSnapDragDistance = 0;
             var tmpVector = new Vector3();
+            var tmpSnapEvent = {snapDistance: 0};
             this._dragBehavior.onDragObservable.add((event)=>{                
                 if(this.attachedMesh){
                     // Snapping logic
@@ -93,7 +94,8 @@ module BABYLON {
                     }
 
                     if(snapped){
-                        this.onSnapObservable.notifyObservers({snapDistance: this.snapDistance*dragSteps});
+                        tmpSnapEvent.snapDistance = this.snapDistance*dragSteps;
+                        this.onSnapObservable.notifyObservers(tmpSnapEvent);
                     }
                 }
             })

+ 3 - 1
src/Gizmos/babylon.planeRotationGizmo.ts

@@ -63,6 +63,7 @@ module BABYLON {
             var planeNormalTowardsCamera = new Vector3();
             var localPlaneNormalTowardsCamera = new Vector3();
 
+            var tmpSnapEvent = {snapDistance: 0};
             var currentSnapDragDistance = 0;
             this._dragBehavior.onDragObservable.add((event)=>{
                 if(this.attachedMesh && lastDragPosition){
@@ -114,7 +115,8 @@ module BABYLON {
 
                     lastDragPosition = event.dragPlanePoint;
                     if(snapped){
-                        this.onSnapObservable.notifyObservers({snapDistance: angle});
+                        tmpSnapEvent.snapDistance = angle;
+                        this.onSnapObservable.notifyObservers(tmpSnapEvent);
                     }
                 }
             })