From 3efb54ea3c38487074dcf9a26534b67472508809 Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 3 Apr 2019 21:14:17 +0200 Subject: [PATCH] Physics2D/RigidBody2D: Fix SetPosition --- src/Nazara/Physics2D/RigidBody2D.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Nazara/Physics2D/RigidBody2D.cpp b/src/Nazara/Physics2D/RigidBody2D.cpp index a4876a1e6..e4c29b19a 100644 --- a/src/Nazara/Physics2D/RigidBody2D.cpp +++ b/src/Nazara/Physics2D/RigidBody2D.cpp @@ -470,9 +470,8 @@ namespace Nz void RigidBody2D::SetPosition(const Vector2f& position) { - cpVect oldPosition = cpBodyGetPosition(m_handle); - - cpBodySetPosition(m_handle, cpBodyLocalToWorld(m_handle, cpv(position.x - oldPosition.x + m_positionOffset.x, position.y - oldPosition.y + m_positionOffset.y))); + // Use cpTransformVect to rotate/scale the position offset + cpBodySetPosition(m_handle, cpvadd(cpv(position.x, position.y), cpTransformVect(m_handle->transform, cpv(m_positionOffset.x, m_positionOffset.y)))); if (m_isStatic) { m_world->RegisterPostStep(this, [](Nz::RigidBody2D* body)