Browse Source

Platform physics now set the absolute position, instead of transforming in local space

This fixes issues with 3MF, which don't share the same local coordinate space.
CURA-382
Jaime van Kessel 8 years ago
parent
commit
75be8080ec
1 changed files with 6 additions and 5 deletions
  1. 6 5
      cura/PlatformPhysicsOperation.py

+ 6 - 5
cura/PlatformPhysicsOperation.py

@@ -3,21 +3,22 @@
 
 from UM.Operations.Operation import Operation
 from UM.Operations.GroupedOperation import GroupedOperation
+from UM.Scene.SceneNode import SceneNode
 
 ##  A specialised operation designed specifically to modify the previous operation.
 class PlatformPhysicsOperation(Operation):
     def __init__(self, node, translation):
         super().__init__()
         self._node = node
-        self._old_position = node.getPosition()
-        self._new_position = node.getPosition() + translation
+        self._old_transformation = node.getLocalTransformation()
+        self._translation = translation
         self._always_merge = True
 
     def undo(self):
-        self._node.setPosition(self._old_position)
+        self._node.setTransformation(self._old_transformation)
 
     def redo(self):
-        self._node.setPosition(self._new_position)
+        self._node.translate(self._translation, SceneNode.TransformSpace.World)
 
     def mergeWith(self, other):
         group = GroupedOperation()
@@ -28,4 +29,4 @@ class PlatformPhysicsOperation(Operation):
         return group
 
     def __repr__(self):
-        return "PlatformPhysicsOperation(new_position = {0})".format(self._new_position)
+        return "PlatformPhysicsOperation(translation = {0})".format(self._translation)