From 75be8080ece325262bb83ac98ba9ebd7071c422d Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Fri, 28 Oct 2016 13:53:24 +0200 Subject: [PATCH] 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 --- cura/PlatformPhysicsOperation.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/cura/PlatformPhysicsOperation.py b/cura/PlatformPhysicsOperation.py index fa58e45d9c..04f7e1616c 100644 --- a/cura/PlatformPhysicsOperation.py +++ b/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)