mirror of
https://github.com/AxioDL/metaforce.git
synced 2025-12-09 12:27:43 +00:00
Various imps
This commit is contained in:
@@ -2,21 +2,13 @@
|
||||
#define __URDE_CPHYSICSACTOR_HPP__
|
||||
|
||||
#include "CActor.hpp"
|
||||
#include "Collision/CCollisionPrimitive.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
class CCollisionInfoList;
|
||||
struct SMoverData;
|
||||
|
||||
class CCollisionPrimitive
|
||||
{
|
||||
public:
|
||||
zeus::CVector3f x1d8_offset;
|
||||
};
|
||||
|
||||
class CCollisionInfoList
|
||||
{
|
||||
};
|
||||
|
||||
struct SMoverData
|
||||
{
|
||||
zeus::CVector3f x0_;
|
||||
@@ -31,33 +23,34 @@ struct SMoverData
|
||||
class CPhysicsActor : public CActor
|
||||
{
|
||||
protected:
|
||||
float xd8_mass;
|
||||
float xdc_massRecip;
|
||||
float xe0_inertialTensor;
|
||||
float xe4_inertialTensorRecip;
|
||||
zeus::CAABox x194_baseBoundingBox;
|
||||
CCollisionPrimitive x1b0_collisionPrimitive;
|
||||
float x228_stepUpHeight;
|
||||
float x22c_stepDownHeight;
|
||||
float x230_restitutionCoefModifier;
|
||||
float x234_collisionAccuracyModifier;
|
||||
float xe8_mass;
|
||||
float xec_massRecip;
|
||||
float xf0_inertialTensor;
|
||||
float xf4_inertialTensorRecip;
|
||||
zeus::CAABox x1a4_baseBoundingBox;
|
||||
CCollisionPrimitive x1c0_collisionPrimitive;
|
||||
zeus::CVector3f x1e8_primitiveOffset;
|
||||
float x23c_stepUpHeight;
|
||||
float x240_stepDownHeight;
|
||||
float x244_restitutionCoefModifier;
|
||||
float x248_collisionAccuracyModifier;
|
||||
public:
|
||||
CPhysicsActor(TUniqueId, bool, const std::string&, const CEntityInfo&,
|
||||
const zeus::CTransform&, const CModelData&, const CMaterialList&,
|
||||
const zeus::CTransform&, CModelData&&, const CMaterialList&,
|
||||
const zeus::CAABox&, const SMoverData&, const CActorParameters&,
|
||||
float, float);
|
||||
|
||||
float GetCollisionAccuracyModifier()
|
||||
{ return x234_collisionAccuracyModifier; }
|
||||
{ return x248_collisionAccuracyModifier; }
|
||||
|
||||
void SetCollisionAccuracyModifier(float modifier)
|
||||
{ x234_collisionAccuracyModifier = modifier; }
|
||||
{ x248_collisionAccuracyModifier = modifier; }
|
||||
|
||||
float GetCoefficientOfRestitutionModifier()
|
||||
{ return x230_restitutionCoefModifier; }
|
||||
{ return x244_restitutionCoefModifier; }
|
||||
|
||||
void SetCoefficientOfRestitutionModifier(float modifier)
|
||||
{ x230_restitutionCoefModifier = modifier;}
|
||||
{ x244_restitutionCoefModifier = modifier;}
|
||||
|
||||
void DrawCollisionPrimitive()
|
||||
{ }
|
||||
@@ -77,31 +70,38 @@ public:
|
||||
{ return GetBoundingBox().center(); }
|
||||
|
||||
float GetStepUpHeight()
|
||||
{ return x228_stepUpHeight; }
|
||||
{ return x23c_stepUpHeight; }
|
||||
|
||||
float GetStepDownHeight()
|
||||
{ return x22c_stepDownHeight; }
|
||||
{ return x240_stepDownHeight; }
|
||||
|
||||
void SetPrimitiveOffset(const zeus::CVector2f& offset)
|
||||
{ x1b0_collisionPrimitive.x1d8_offset = offset; }
|
||||
{ x1e8_primitiveOffset = offset; }
|
||||
|
||||
zeus::CVector3f GetPrimitiveOffset()
|
||||
{ return x1b0_collisionPrimitive.x1d8_offset; }
|
||||
{ return x1e8_primitiveOffset; }
|
||||
|
||||
float GetWeight()
|
||||
{ return 24.525002f * xd8_mass; }
|
||||
{ return 24.525002f * xe8_mass; }
|
||||
|
||||
void MoveCollisionPrimitive(const zeus::CVector3f& offset)
|
||||
{
|
||||
x1e8_primitiveOffset = offset;
|
||||
}
|
||||
|
||||
void SetBoundingBox(const zeus::CAABox& box)
|
||||
{ x194_baseBoundingBox = box; }
|
||||
{
|
||||
x1a4_baseBoundingBox = box;
|
||||
MoveCollisionPrimitive(zeus::CVector3f::skZero);
|
||||
}
|
||||
|
||||
zeus::CAABox GetMotionVolume()
|
||||
{ return zeus::CAABox::skInvertedBox; }
|
||||
|
||||
zeus::CAABox GetBoundingBox()
|
||||
{ return zeus::CAABox::skInvertedBox; }
|
||||
zeus::CAABox GetBoundingBox();
|
||||
|
||||
const zeus::CAABox& GetBaseBoundingBox() const
|
||||
{ return x194_baseBoundingBox; }
|
||||
{ return x1a4_baseBoundingBox; }
|
||||
|
||||
void CollidedWith(const TUniqueId&, const CCollisionInfoList&, CStateManager&)
|
||||
{}
|
||||
@@ -112,24 +112,24 @@ public:
|
||||
}
|
||||
|
||||
const CCollisionPrimitive& GetCollisionPrimitive() const
|
||||
{ return x1b0_collisionPrimitive; }
|
||||
{ return x1c0_collisionPrimitive; }
|
||||
|
||||
void SetInertiaTensorScalar(float tensor)
|
||||
{
|
||||
if (tensor <= 0.0f)
|
||||
tensor = 1.0f;
|
||||
xe0_inertialTensor = tensor;
|
||||
xe4_inertialTensorRecip = 1.0f / tensor;
|
||||
xf0_inertialTensor = tensor;
|
||||
xf4_inertialTensorRecip = 1.0f / tensor;
|
||||
}
|
||||
|
||||
void SetMass(float mass)
|
||||
{
|
||||
xd8_mass = mass;
|
||||
xe8_mass = mass;
|
||||
float tensor = 1.0f;
|
||||
if (mass > 0.0f)
|
||||
tensor = 1.0f / mass;
|
||||
|
||||
xdc_massRecip = tensor;
|
||||
xec_massRecip = tensor;
|
||||
SetInertiaTensorScalar(mass * tensor);
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user