Update Physics2D Component and Body (#178)
* Update * Add: [Get/Set]AngularDaming for standardization * Fix: Name error * Add: [Get/Set][AngularDamping/MomentOfInertia] in PhysicsComponent2D * Forgot in last commit * Add: param coordSys in [PhysicsComponent2D/RigidBody2D]::SetMassCenter * Add: Some forgotten inline * Fix little error * Fix: Indentation before case * Move and Change GetCenterOfGravity
This commit is contained in:
@@ -87,7 +87,7 @@ namespace Nz
|
||||
|
||||
void RigidBody2D::AddForce(const Vector2f& force, CoordSys coordSys)
|
||||
{
|
||||
return AddForce(force, GetCenterOfGravity(coordSys), coordSys);
|
||||
return AddForce(force, GetMassCenter(coordSys), coordSys);
|
||||
}
|
||||
|
||||
void RigidBody2D::AddForce(const Vector2f& force, const Vector2f& point, CoordSys coordSys)
|
||||
@@ -106,7 +106,7 @@ namespace Nz
|
||||
|
||||
void RigidBody2D::AddImpulse(const Vector2f& impulse, CoordSys coordSys)
|
||||
{
|
||||
return AddImpulse(impulse, GetCenterOfGravity(coordSys), coordSys);
|
||||
return AddImpulse(impulse, GetMassCenter(coordSys), coordSys);
|
||||
}
|
||||
|
||||
void RigidBody2D::AddImpulse(const Vector2f& impulse, const Vector2f& point, CoordSys coordSys)
|
||||
@@ -205,26 +205,26 @@ namespace Nz
|
||||
return m_mass;
|
||||
}
|
||||
|
||||
float RigidBody2D::GetMomentOfInertia() const
|
||||
Vector2f RigidBody2D::GetMassCenter(CoordSys coordSys) const
|
||||
{
|
||||
return float(cpBodyGetMoment(m_handle));
|
||||
}
|
||||
|
||||
Vector2f RigidBody2D::GetCenterOfGravity(CoordSys coordSys) const
|
||||
{
|
||||
cpVect cog = cpBodyGetCenterOfGravity(m_handle);
|
||||
cpVect massCenter = cpBodyGetCenterOfGravity(m_handle);
|
||||
|
||||
switch (coordSys)
|
||||
{
|
||||
case CoordSys_Global:
|
||||
cog = cpBodyLocalToWorld(m_handle, cog);
|
||||
massCenter = cpBodyLocalToWorld(m_handle, massCenter);
|
||||
break;
|
||||
|
||||
case CoordSys_Local:
|
||||
break; // Nothing to do
|
||||
}
|
||||
|
||||
return Vector2f(static_cast<float>(cog.x), static_cast<float>(cog.y));
|
||||
return Vector2f(static_cast<float>(massCenter.x), static_cast<float>(massCenter.y));
|
||||
}
|
||||
|
||||
float RigidBody2D::GetMomentOfInertia() const
|
||||
{
|
||||
return float(cpBodyGetMoment(m_handle));
|
||||
}
|
||||
|
||||
Vector2f RigidBody2D::GetPosition() const
|
||||
@@ -362,9 +362,21 @@ namespace Nz
|
||||
m_mass = mass;
|
||||
}
|
||||
|
||||
void RigidBody2D::SetMassCenter(const Vector2f& center)
|
||||
void RigidBody2D::SetMassCenter(const Vector2f& center, CoordSys coordSys)
|
||||
{
|
||||
cpBodySetCenterOfGravity(m_handle, cpv(center.x, center.y));
|
||||
cpVect massCenter = cpv(center.x, center.y);
|
||||
|
||||
switch (coordSys)
|
||||
{
|
||||
case CoordSys_Global:
|
||||
massCenter = cpBodyWorldToLocal(m_handle, massCenter);
|
||||
break;
|
||||
|
||||
case CoordSys_Local:
|
||||
break; // Nothing to do
|
||||
}
|
||||
|
||||
cpBodySetCenterOfGravity(m_handle, massCenter);
|
||||
}
|
||||
|
||||
void RigidBody2D::SetMomentOfInertia(float moment)
|
||||
|
||||
Reference in New Issue
Block a user