Przeglądaj źródła

Make rotation and scale relative to size of mesh.

Trevor Baron 7 lat temu
rodzic
commit
fe501722aa
1 zmienionych plików z 5 dodań i 1 usunięć
  1. 5 1
      src/Gizmos/babylon.boundingBoxGizmo.ts

+ 5 - 1
src/Gizmos/babylon.boundingBoxGizmo.ts

@@ -119,6 +119,9 @@ module BABYLON {
 
                         // project drag delta on to the resulting drag axis and rotate based on that
                         var projectDist = -Vector3.Dot(dragAxis, event.delta);
+                        
+                        // Make rotation relative to size of mesh.
+                        projectDist = (projectDist / this._boundingDimensions.length())*this._anchorMesh.scaling.length();
 
                         // Rotate based on axis
                         if(!this.attachedMesh.rotationQuaternion){
@@ -179,7 +182,8 @@ module BABYLON {
                         _dragBehavior.onDragObservable.add((event)=>{
                             this.onDragObservable.notifyObservers({});
                             if(this.attachedMesh){
-                                var deltaScale = new Vector3(event.dragDistance,event.dragDistance,event.dragDistance);
+                                var relativeDragDistance = (event.dragDistance / this._boundingDimensions.length())*this._anchorMesh.scaling.length();
+                                var deltaScale = new Vector3(relativeDragDistance,relativeDragDistance,relativeDragDistance);
                                 deltaScale.scaleInPlace(this._scaleDragSpeed);
                                 this.updateBoundingBox();