diff --git a/src/main/java/games/rednblack/editor/system/PhysicsAdjustSystem.java b/src/main/java/games/rednblack/editor/system/PhysicsAdjustSystem.java index c3651c33..72482c1f 100644 --- a/src/main/java/games/rednblack/editor/system/PhysicsAdjustSystem.java +++ b/src/main/java/games/rednblack/editor/system/PhysicsAdjustSystem.java @@ -3,9 +3,11 @@ package games.rednblack.editor.system; import com.artemis.annotations.All; import com.badlogic.gdx.math.MathUtils; import com.badlogic.gdx.math.Vector2; +import games.rednblack.editor.renderer.components.ParentNodeComponent; import games.rednblack.editor.renderer.components.TransformComponent; import games.rednblack.editor.renderer.components.physics.PhysicsBodyComponent; import games.rednblack.editor.renderer.systems.PhysicsSystem; +import games.rednblack.editor.renderer.utils.TransformMathUtils; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; @All(PhysicsBodyComponent.class) @@ -26,8 +28,16 @@ public class PhysicsAdjustSystem extends PhysicsSystem { if(physicsBodyComponent.body == null) return; - transformVec.x = transformComponent.x + transformComponent.originX; - transformVec.y = transformComponent.y + transformComponent.originY; + transformVec.x = transformComponent.originX; + transformVec.y = transformComponent.originY; + int parentEntity = parentNodeComponentMapper.get(entity).parentEntity; + ParentNodeComponent rootParentNode = parentNodeComponentMapper.get(parentEntity); + if (rootParentNode != null) { + TransformMathUtils.localToSceneCoordinates(entity, transformVec, transformComponentMapper, parentNodeComponentMapper); + } else { + transformVec.x = transformComponent.x + transformComponent.originX; + transformVec.y = transformComponent.y + transformComponent.originY; + } physicsBodyComponent.body.setTransform(transformVec, transformComponent.rotation * MathUtils.degreesToRadians); } }