Physics2D/RigidBody2D: Add signal for movement/release
This commit is contained in:
parent
45262145aa
commit
b1e4aea496
|
|
@ -9,6 +9,7 @@
|
||||||
|
|
||||||
#include <Nazara/Prerequesites.hpp>
|
#include <Nazara/Prerequesites.hpp>
|
||||||
#include <Nazara/Core/Enums.hpp>
|
#include <Nazara/Core/Enums.hpp>
|
||||||
|
#include <Nazara/Core/Signal.hpp>
|
||||||
#include <Nazara/Math/Matrix4.hpp>
|
#include <Nazara/Math/Matrix4.hpp>
|
||||||
#include <Nazara/Math/Quaternion.hpp>
|
#include <Nazara/Math/Quaternion.hpp>
|
||||||
#include <Nazara/Math/Rect.hpp>
|
#include <Nazara/Math/Rect.hpp>
|
||||||
|
|
@ -61,6 +62,9 @@ namespace Nz
|
||||||
RigidBody2D& operator=(const RigidBody2D& object);
|
RigidBody2D& operator=(const RigidBody2D& object);
|
||||||
RigidBody2D& operator=(RigidBody2D&& object);
|
RigidBody2D& operator=(RigidBody2D&& object);
|
||||||
|
|
||||||
|
NazaraSignal(OnRigidBody2DMove, RigidBody2D* /*oldPointer*/, RigidBody2D* /*newPointer*/);
|
||||||
|
NazaraSignal(OnRigidBody2DRelease, RigidBody2D* /*rigidBody*/);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void Create(float mass = 1.f, float moment = 1.f);
|
void Create(float mass = 1.f, float moment = 1.f);
|
||||||
void Destroy();
|
void Destroy();
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,8 @@ namespace Nz
|
||||||
}
|
}
|
||||||
|
|
||||||
RigidBody2D::RigidBody2D(RigidBody2D&& object) :
|
RigidBody2D::RigidBody2D(RigidBody2D&& object) :
|
||||||
|
OnRigidBody2DMove(std::move(object.OnRigidBody2DMove)),
|
||||||
|
OnRigidBody2DRelease(std::move(object.OnRigidBody2DRelease)),
|
||||||
m_shapes(std::move(object.m_shapes)),
|
m_shapes(std::move(object.m_shapes)),
|
||||||
m_geom(std::move(object.m_geom)),
|
m_geom(std::move(object.m_geom)),
|
||||||
m_userData(object.m_userData),
|
m_userData(object.m_userData),
|
||||||
|
|
@ -61,10 +63,14 @@ namespace Nz
|
||||||
cpBodySetUserData(m_handle, this);
|
cpBodySetUserData(m_handle, this);
|
||||||
|
|
||||||
object.m_handle = nullptr;
|
object.m_handle = nullptr;
|
||||||
|
|
||||||
|
OnRigidBody2DMove(&object, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
RigidBody2D::~RigidBody2D()
|
RigidBody2D::~RigidBody2D()
|
||||||
{
|
{
|
||||||
|
OnRigidBody2DRelease(this);
|
||||||
|
|
||||||
Destroy();
|
Destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -272,6 +278,9 @@ namespace Nz
|
||||||
{
|
{
|
||||||
Destroy();
|
Destroy();
|
||||||
|
|
||||||
|
OnRigidBody2DMove = std::move(object.OnRigidBody2DMove);
|
||||||
|
OnRigidBody2DRelease = std::move(object.OnRigidBody2DRelease);
|
||||||
|
|
||||||
m_handle = object.m_handle;
|
m_handle = object.m_handle;
|
||||||
m_geom = std::move(object.m_geom);
|
m_geom = std::move(object.m_geom);
|
||||||
m_gravityFactor = object.m_gravityFactor;
|
m_gravityFactor = object.m_gravityFactor;
|
||||||
|
|
@ -284,6 +293,8 @@ namespace Nz
|
||||||
|
|
||||||
object.m_handle = nullptr;
|
object.m_handle = nullptr;
|
||||||
|
|
||||||
|
OnRigidBody2DMove(&object, this);
|
||||||
|
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue