#pragma once #include "Runtime/GCNTypes.hpp" #include "Runtime/Collision/CCollisionPrimitive.hpp" #include namespace urde { namespace Collide { bool AABox_AABox(const CInternalCollisionStructure&, CCollisionInfoList&); bool AABox_AABox_Bool(const CInternalCollisionStructure&); } // namespace Collide class CCollidableAABox : public CCollisionPrimitive { static inline u32 sTableIndex = UINT32_MAX; zeus::CAABox x10_aabox; public: CCollidableAABox(); CCollidableAABox(const zeus::CAABox&, const CMaterialList&); zeus::CAABox Transform(const zeus::CTransform&) const; u32 GetTableIndex() const override; zeus::CAABox CalculateAABox(const zeus::CTransform&) const override; zeus::CAABox CalculateLocalAABox() const override; FourCC GetPrimType() const override; CRayCastResult CastRayInternal(const CInternalRayCastStructure&) const override; const zeus::CAABox& GetBox() const { return x10_aabox; } zeus::CAABox& Box() { return x10_aabox; } void SetBox(const zeus::CAABox& box) { x10_aabox = box; } static const CCollisionPrimitive::Type& GetType(); static void SetStaticTableIndex(u32 index); static bool CollideMovingAABox(const CInternalCollisionStructure&, const zeus::CVector3f&, double&, CCollisionInfo&); static bool CollideMovingSphere(const CInternalCollisionStructure&, const zeus::CVector3f&, double&, CCollisionInfo&); }; } // namespace urde