diff --git a/include/Nazara/Physics2D/RigidBody2D.hpp b/include/Nazara/Physics2D/RigidBody2D.hpp index 53c9479fb..51860b9c7 100644 --- a/include/Nazara/Physics2D/RigidBody2D.hpp +++ b/include/Nazara/Physics2D/RigidBody2D.hpp @@ -50,7 +50,6 @@ namespace Nz bool IsSleeping() const; void SetAngularVelocity(float angularVelocity); - void SetGeom(Collider2DRef geom); void SetGravityFactor(float gravityFactor); void SetMass(float mass); void SetMassCenter(const Vector2f& center); @@ -63,6 +62,7 @@ namespace Nz private: void Destroy(); + void SetGeom(Collider2DRef geom); std::vector m_shapes; Collider2DRef m_geom; diff --git a/src/Nazara/Physics2D/RigidBody2D.cpp b/src/Nazara/Physics2D/RigidBody2D.cpp index c3cca7b5c..78ed42afd 100644 --- a/src/Nazara/Physics2D/RigidBody2D.cpp +++ b/src/Nazara/Physics2D/RigidBody2D.cpp @@ -174,25 +174,6 @@ namespace Nz cpBodySetAngularVelocity(m_handle, angularVelocity); } - void RigidBody2D::SetGeom(Collider2DRef geom) - { - if (m_geom.Get() != geom) - { - for (cpShape* shape : m_shapes) - { - cpBodyRemoveShape(m_handle, shape); - cpShapeFree(shape); - } - - if (geom) - m_geom = geom; - else - m_geom = NullCollider2D::New(); - - m_shapes = m_geom->CreateShapes(this); - } - } - void RigidBody2D::SetGravityFactor(float gravityFactor) { m_gravityFactor = gravityFactor; @@ -267,4 +248,14 @@ namespace Nz if (m_handle) cpBodyFree(m_handle); } + + void RigidBody2D::SetGeom(Collider2DRef geom) + { + if (geom) + m_geom = geom; + else + m_geom = NullCollider2D::New(); + + m_shapes = m_geom->CreateShapes(this); + } }