metaforce/Runtime/Collision/CJointCollisionDescription.hpp

66 lines
2.1 KiB
C++
Raw Normal View History

2018-10-07 03:42:33 +00:00
#pragma once
2017-03-01 03:42:06 +00:00
#include "Character/CSegId.hpp"
#include "zeus/CAABox.hpp"
namespace urde
{
class CJointCollisionDescription
{
public:
enum class ECollisionType
{
Sphere,
SphereSubdivide,
AABox,
OBBAutoSize,
OBB,
2017-03-01 03:42:06 +00:00
};
enum class EOrientationType
{
Zero,
One
2017-03-01 03:42:06 +00:00
};
private:
ECollisionType x0_colType;
EOrientationType x4_orientType;
CSegId x8_;
CSegId x9_;
zeus::CVector3f xc_;
zeus::CVector3f x18_;
float x24_;
float x28_;
2017-03-26 04:12:06 +00:00
std::string x2c_name;
TUniqueId x3c_actorId = kInvalidUniqueId;
float x40_;
2017-03-26 04:12:06 +00:00
2017-03-01 03:42:06 +00:00
public:
CJointCollisionDescription(ECollisionType, CSegId, CSegId, const zeus::CVector3f&, const zeus::CVector3f&, float,
2017-11-13 06:19:18 +00:00
float, EOrientationType, std::string_view, float);
std::string_view GetName() const { return x2c_name; }
2017-03-26 04:12:06 +00:00
TUniqueId GetCollisionActorId() const { return x3c_actorId; }
static CJointCollisionDescription SphereSubdivideCollision(CSegId, CSegId, float, float,
2017-11-13 06:19:18 +00:00
EOrientationType, std::string_view, float);
static CJointCollisionDescription SphereCollision(CSegId, float, std::string_view, float);
static CJointCollisionDescription AABoxCollision(CSegId, zeus::CVector3f const&, std::string_view, float);
static CJointCollisionDescription OBBAutoSizeCollision(CSegId, CSegId, const zeus::CVector3f&, EOrientationType,
2017-11-13 06:19:18 +00:00
std::string_view, float);
static CJointCollisionDescription OBBCollision(CSegId, const zeus::CVector3f&, const zeus::CVector3f&,
2017-11-13 06:19:18 +00:00
std::string_view, float);
2017-03-01 03:42:06 +00:00
zeus::CVector3f GetPivotPoint() const;
float GetRadius() const;
void SetCollisionActorId(TUniqueId);
2017-05-07 06:55:01 +00:00
EOrientationType GetOrientationType() const { return x4_orientType; }
2017-03-01 03:42:06 +00:00
float GetMass() const;
zeus::CAABox GetBounds() const;
void GetType() const;
void GetNextId() const;
void GetPivotId() const;
void ScaleAllBounds(const zeus::CVector3f&);
void GetTween() const;
};
}