2
0
Эх сурвалжийг харах

Move handle now behaves properly when the moved object has a rotated parent

BearishSun 9 жил өмнө
parent
commit
6156944575

+ 10 - 1
Source/MBansheeEditor/Windows/Scene/Handles/DefaultHandleManager.cs

@@ -151,7 +151,16 @@ namespace BansheeEditor
                             MoveHandle moveHandle = (MoveHandle) activeHandle;
 
                             foreach (var selectedObj in activeSelection)
-                                selectedObj.so.LocalPosition = selectedObj.initialPosition + moveHandle.Delta;
+                            {
+                                SceneObject parentSO = selectedObj.so.Parent;
+                                if (parentSO == null)
+                                    selectedObj.so.LocalPosition = selectedObj.initialPosition + moveHandle.Delta;
+                                else
+                                {
+                                    Vector3 parentRelativeDelta = parentSO.Rotation.Inverse.Rotate(moveHandle.Delta);
+                                    selectedObj.so.LocalPosition = selectedObj.initialPosition + parentRelativeDelta;
+                                }
+                            }
 
                             break;
                         case SceneViewTool.Rotate: