Physics2D/RigidBody2D: Add Userdata field
This commit is contained in:
parent
096ea72fb6
commit
45262145aa
|
|
@ -43,6 +43,7 @@ namespace Nz
|
||||||
float GetMass() const;
|
float GetMass() const;
|
||||||
Vector2f GetPosition() const;
|
Vector2f GetPosition() const;
|
||||||
float GetRotation() const;
|
float GetRotation() const;
|
||||||
|
void* GetUserdata() const;
|
||||||
Vector2f GetVelocity() const;
|
Vector2f GetVelocity() const;
|
||||||
|
|
||||||
bool IsMoveable() const;
|
bool IsMoveable() const;
|
||||||
|
|
@ -54,6 +55,7 @@ namespace Nz
|
||||||
void SetMassCenter(const Vector2f& center);
|
void SetMassCenter(const Vector2f& center);
|
||||||
void SetPosition(const Vector2f& position);
|
void SetPosition(const Vector2f& position);
|
||||||
void SetRotation(float rotation);
|
void SetRotation(float rotation);
|
||||||
|
void SetUserdata(void* ud);
|
||||||
void SetVelocity(const Vector2f& velocity);
|
void SetVelocity(const Vector2f& velocity);
|
||||||
|
|
||||||
RigidBody2D& operator=(const RigidBody2D& object);
|
RigidBody2D& operator=(const RigidBody2D& object);
|
||||||
|
|
@ -66,6 +68,7 @@ namespace Nz
|
||||||
std::vector<cpShape*> m_shapes;
|
std::vector<cpShape*> m_shapes;
|
||||||
Collider2DRef m_geom;
|
Collider2DRef m_geom;
|
||||||
cpBody* m_handle;
|
cpBody* m_handle;
|
||||||
|
void* m_userData;
|
||||||
PhysWorld2D* m_world;
|
PhysWorld2D* m_world;
|
||||||
float m_gravityFactor;
|
float m_gravityFactor;
|
||||||
float m_mass;
|
float m_mass;
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ namespace Nz
|
||||||
|
|
||||||
RigidBody2D::RigidBody2D(PhysWorld2D* world, float mass, Collider2DRef geom) :
|
RigidBody2D::RigidBody2D(PhysWorld2D* world, float mass, Collider2DRef geom) :
|
||||||
m_geom(),
|
m_geom(),
|
||||||
|
m_userData(nullptr),
|
||||||
m_world(world),
|
m_world(world),
|
||||||
m_gravityFactor(1.f),
|
m_gravityFactor(1.f),
|
||||||
m_mass(1.f)
|
m_mass(1.f)
|
||||||
|
|
@ -34,6 +35,7 @@ namespace Nz
|
||||||
|
|
||||||
RigidBody2D::RigidBody2D(const RigidBody2D& object) :
|
RigidBody2D::RigidBody2D(const RigidBody2D& object) :
|
||||||
m_geom(object.m_geom),
|
m_geom(object.m_geom),
|
||||||
|
m_userData(object.m_userData),
|
||||||
m_world(object.m_world),
|
m_world(object.m_world),
|
||||||
m_gravityFactor(object.m_gravityFactor),
|
m_gravityFactor(object.m_gravityFactor),
|
||||||
m_mass(0.f)
|
m_mass(0.f)
|
||||||
|
|
@ -50,11 +52,14 @@ namespace Nz
|
||||||
RigidBody2D::RigidBody2D(RigidBody2D&& object) :
|
RigidBody2D::RigidBody2D(RigidBody2D&& object) :
|
||||||
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_handle(object.m_handle),
|
m_handle(object.m_handle),
|
||||||
m_world(object.m_world),
|
m_world(object.m_world),
|
||||||
m_gravityFactor(object.m_gravityFactor),
|
m_gravityFactor(object.m_gravityFactor),
|
||||||
m_mass(object.m_mass)
|
m_mass(object.m_mass)
|
||||||
{
|
{
|
||||||
|
cpBodySetUserData(m_handle, this);
|
||||||
|
|
||||||
object.m_handle = nullptr;
|
object.m_handle = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -144,6 +149,11 @@ namespace Nz
|
||||||
return static_cast<float>(cpBodyGetAngle(m_handle));
|
return static_cast<float>(cpBodyGetAngle(m_handle));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void* RigidBody2D::GetUserdata() const
|
||||||
|
{
|
||||||
|
return m_userData;
|
||||||
|
}
|
||||||
|
|
||||||
Vector2f RigidBody2D::GetVelocity() const
|
Vector2f RigidBody2D::GetVelocity() const
|
||||||
{
|
{
|
||||||
cpVect vel = cpBodyGetVelocity(m_handle);
|
cpVect vel = cpBodyGetVelocity(m_handle);
|
||||||
|
|
@ -242,6 +252,11 @@ namespace Nz
|
||||||
cpBodySetAngle(m_handle, rotation);
|
cpBodySetAngle(m_handle, rotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RigidBody2D::SetUserdata(void* ud)
|
||||||
|
{
|
||||||
|
m_userData = ud;
|
||||||
|
}
|
||||||
|
|
||||||
void RigidBody2D::SetVelocity(const Vector2f& velocity)
|
void RigidBody2D::SetVelocity(const Vector2f& velocity)
|
||||||
{
|
{
|
||||||
cpBodySetVelocity(m_handle, cpv(velocity.x, velocity.y));
|
cpBodySetVelocity(m_handle, cpv(velocity.x, velocity.y));
|
||||||
|
|
@ -262,8 +277,11 @@ namespace Nz
|
||||||
m_gravityFactor = object.m_gravityFactor;
|
m_gravityFactor = object.m_gravityFactor;
|
||||||
m_mass = object.m_mass;
|
m_mass = object.m_mass;
|
||||||
m_shapes = std::move(object.m_shapes);
|
m_shapes = std::move(object.m_shapes);
|
||||||
|
m_userData = object.m_userData;
|
||||||
m_world = object.m_world;
|
m_world = object.m_world;
|
||||||
|
|
||||||
|
cpBodySetUserData(m_handle, this);
|
||||||
|
|
||||||
object.m_handle = nullptr;
|
object.m_handle = nullptr;
|
||||||
|
|
||||||
return *this;
|
return *this;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue