Physics2D/RigidBody2D: Add signal for movement/release

This commit is contained in:
Jérôme Leclercq 2017-02-22 16:52:34 +01:00
parent 45262145aa
commit b1e4aea496
2 changed files with 15 additions and 0 deletions

View File

@ -9,6 +9,7 @@
#include <Nazara/Prerequesites.hpp>
#include <Nazara/Core/Enums.hpp>
#include <Nazara/Core/Signal.hpp>
#include <Nazara/Math/Matrix4.hpp>
#include <Nazara/Math/Quaternion.hpp>
#include <Nazara/Math/Rect.hpp>
@ -61,6 +62,9 @@ namespace Nz
RigidBody2D& operator=(const RigidBody2D& object);
RigidBody2D& operator=(RigidBody2D&& object);
NazaraSignal(OnRigidBody2DMove, RigidBody2D* /*oldPointer*/, RigidBody2D* /*newPointer*/);
NazaraSignal(OnRigidBody2DRelease, RigidBody2D* /*rigidBody*/);
private:
void Create(float mass = 1.f, float moment = 1.f);
void Destroy();

View File

@ -50,6 +50,8 @@ namespace Nz
}
RigidBody2D::RigidBody2D(RigidBody2D&& object) :
OnRigidBody2DMove(std::move(object.OnRigidBody2DMove)),
OnRigidBody2DRelease(std::move(object.OnRigidBody2DRelease)),
m_shapes(std::move(object.m_shapes)),
m_geom(std::move(object.m_geom)),
m_userData(object.m_userData),
@ -61,10 +63,14 @@ namespace Nz
cpBodySetUserData(m_handle, this);
object.m_handle = nullptr;
OnRigidBody2DMove(&object, this);
}
RigidBody2D::~RigidBody2D()
{
OnRigidBody2DRelease(this);
Destroy();
}
@ -272,6 +278,9 @@ namespace Nz
{
Destroy();
OnRigidBody2DMove = std::move(object.OnRigidBody2DMove);
OnRigidBody2DRelease = std::move(object.OnRigidBody2DRelease);
m_handle = object.m_handle;
m_geom = std::move(object.m_geom);
m_gravityFactor = object.m_gravityFactor;
@ -284,6 +293,8 @@ namespace Nz
object.m_handle = nullptr;
OnRigidBody2DMove(&object, this);
return *this;
}