2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-08 21:07:42 +00:00

Work on collision related implementations

This commit is contained in:
Jack Andersen
2017-06-17 15:58:13 -10:00
parent 47e73f9f80
commit 71a361f54e
32 changed files with 1521 additions and 134 deletions

View File

@@ -12,12 +12,11 @@ CPhysicsActor::CPhysicsActor(TUniqueId uid, bool active, const std::string& name
, xec_massRecip(moverData.x30_mass <= 0.f ? 1.f : 1.f / moverData.x30_mass)
, x150_momentum(moverData.x18_momentum)
, x1c0_collisionPrimitive(box, matList)
, x1f4_translation(xf.origin)
, x200_orientation(xf.buildMatrix3f())
, x1f4_lastNonCollidingState(xf.origin, xf.buildMatrix3f())
, x23c_stepUpHeight(stepUp)
, x240_stepDownHeight(stepDown)
{
xf8_24_ = true;
xf8_24_movable = true;
SetMass(moverData.x30_mass);
MoveCollisionPrimitive(zeus::CVector3f::skZero);
SetVelocityOR(moverData.x0_velocity);
@@ -37,7 +36,7 @@ zeus::CVector3f CPhysicsActor::GetAimPosition(const CStateManager&, float dt) co
return GetBoundingBox().center() + trans;
}
void CPhysicsActor::CollidedWith(const TUniqueId&, const CCollisionInfoList&, CStateManager&) {}
void CPhysicsActor::CollidedWith(TUniqueId, const CCollisionInfoList&, CStateManager&) {}
const CCollisionPrimitive* CPhysicsActor::GetCollisionPrimitive() const { return &x1c0_collisionPrimitive; }
@@ -52,9 +51,9 @@ float CPhysicsActor::GetStepDownHeight() const { return x240_stepDownHeight; }
float CPhysicsActor::GetWeight() const { return 24.525002f * xe8_mass; }
void CPhysicsActor::sub_8011A4C(float f) { x238_ = f; }
void CPhysicsActor::sub_8011A4C(float f) { x238_maximumCollisionVelocity = f; }
float CPhysicsActor::sub_8011A4B8() const { return x238_; }
float CPhysicsActor::sub_8011A4B8() const { return x238_maximumCollisionVelocity; }
void CPhysicsActor::SetPrimitiveOffset(const zeus::CVector2f& offset) { x1e8_primitiveOffset = offset; }
@@ -144,11 +143,6 @@ void CPhysicsActor::SetInertiaTensorScalar(float tensor)
xf4_inertiaTensorRecip = 1.0f / tensor;
}
void CPhysicsActor::SetCoefficientOfRestitutionModifier(float mod)
{
x244_restitutionCoefModifier = mod;
}
void CPhysicsActor::SetMass(float mass)
{
xe8_mass = mass;
@@ -302,7 +296,7 @@ CPhysicsState CPhysicsActor::GetPhysicsState() const
CMotionState CPhysicsActor::PredictMotion_Internal(float dt) const
{
if (xf8_25_)
if (xf8_25_angularEnabled)
return PredictMotion(dt);
CMotionState msl = PredictLinearMotion(dt);