prime/include/Collision/CCollidableAABox.hpp

44 lines
1.5 KiB
C++

#ifndef _CCOLLIDABLEAABOX
#define _CCOLLIDABLEAABOX
#include "types.h"
#include "Collision/CCollisionPrimitive.hpp"
class CCollidableAABox : public CCollisionPrimitive {
public:
CCollidableAABox();
CCollidableAABox(const CAABox& box, const CMaterialList& matList)
: CCollisionPrimitive(matList), x10_aabb(box) {}
static bool CollideMovingAABox(const CInternalCollisionStructure& collision, const CVector3f& dir,
double& dOut, CCollisionInfo& infoOut);
static bool CollideMovingSphere(const CInternalCollisionStructure& collision,
const CVector3f& dir, double& dOut, CCollisionInfo& infoOut);
uint GetTableIndex() const;
CAABox CalculateAABox(const CTransform4f&) const;
CAABox CalculateLocalAABox() const;
CAABox Transform(const CTransform4f& xf) const;
FourCC GetPrimType() const;
CRayCastResult CastRayInternal(const CInternalRayCastStructure&) const;
const CAABox& GetBox() const { return x10_aabb; }
static void SetStaticTableIndex(uint idx);
static CCollisionPrimitive::Type GetType();
private:
static uint sTableIndex;
CAABox x10_aabb;
};
CHECK_SIZEOF(CCollidableAABox, 0x28)
namespace Collide {
bool AABox_AABox_Bool(const CInternalCollisionStructure&);
bool AABox_AABox(const CInternalCollisionStructure& collision, CCollisionInfoList& list);
bool Sphere_AABox(const CInternalCollisionStructure& collision, CCollisionInfoList& list);
} // namespace Collide
#endif // _CCOLLIDABLEAABOX