2017-03-01 03:42:06 +00:00
|
|
|
#ifndef __URDE_CJOINTCOLLISIONDESCRIPTION_HPP__
|
|
|
|
#define __URDE_CJOINTCOLLISIONDESCRIPTION_HPP__
|
|
|
|
|
|
|
|
#include "Character/CSegId.hpp"
|
|
|
|
#include "zeus/CAABox.hpp"
|
|
|
|
|
|
|
|
namespace urde
|
|
|
|
{
|
|
|
|
class CJointCollisionDescription
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
enum class ECollisionType
|
|
|
|
{
|
2017-04-22 11:04:07 +00:00
|
|
|
Sphere,
|
|
|
|
SphereSubdivide,
|
|
|
|
AABox,
|
|
|
|
OBBAutoSize,
|
|
|
|
OBB,
|
2017-03-01 03:42:06 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
enum class EOrientationType
|
|
|
|
{
|
2017-04-22 11:04:07 +00:00
|
|
|
Zero,
|
2017-03-01 03:42:06 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
private:
|
2017-04-22 11:04:07 +00:00
|
|
|
ECollisionType x0_colType;
|
|
|
|
EOrientationType x4_orientType;
|
2017-03-13 01:07:03 +00:00
|
|
|
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;
|
2017-04-22 11:04:07 +00:00
|
|
|
TUniqueId x3c_actorId = kInvalidUniqueId;
|
2017-03-13 01:07:03 +00:00
|
|
|
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; }
|
2017-04-22 11:04:07 +00:00
|
|
|
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);
|
2017-04-22 11:04:07 +00:00
|
|
|
static CJointCollisionDescription OBBAutoSizeCollision(CSegId, CSegId, const zeus::CVector3f&, EOrientationType,
|
2017-11-13 06:19:18 +00:00
|
|
|
std::string_view, float);
|
2017-04-22 11:04:07 +00:00
|
|
|
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;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif // __URDE_CJOINTCOLLISIONDESCRIPTION_HPP__
|