CollisionPrimitive: Make use of constexpr types where applicable

We can now mark some usages of these types as constexpr and also make
them fully internal to the translation unit.
This commit is contained in:
Lioncash 2019-10-29 16:12:20 -04:00
parent 5c7bb9e7d7
commit d7dd256d38
8 changed files with 9 additions and 11 deletions

View File

@ -5,7 +5,7 @@
#include "CInternalRayCastStructure.hpp"
namespace urde {
const CCollisionPrimitive::Type CCollidableAABox::sType(CCollidableAABox::SetStaticTableIndex, "CCollidableAABox");
constexpr CCollisionPrimitive::Type sType(CCollidableAABox::SetStaticTableIndex, "CCollidableAABox");
u32 CCollidableAABox::sTableIndex = -1;
CCollidableAABox::CCollidableAABox() = default;

View File

@ -12,7 +12,6 @@ bool AABox_AABox_Bool(const CInternalCollisionStructure&);
} // namespace Collide
class CCollidableAABox : public CCollisionPrimitive {
static const Type sType;
static u32 sTableIndex;
zeus::CAABox x10_aabox;

View File

@ -1,8 +1,8 @@
#include "CCollidableCollisionSurface.hpp"
namespace urde {
const CCollisionPrimitive::Type CCollidableCollisionSurface::sType(CCollidableCollisionSurface::SetStaticTableIndex,
"CCollidableCollisionSurface");
constexpr CCollisionPrimitive::Type sType(CCollidableCollisionSurface::SetStaticTableIndex,
"CCollidableCollisionSurface");
u32 CCollidableCollisionSurface::sTableIndex = -1;
const CCollisionPrimitive::Type& CCollidableCollisionSurface::GetType() { return sType; }

View File

@ -5,7 +5,6 @@
namespace urde {
class CCollidableCollisionSurface {
static const CCollisionPrimitive::Type sType;
static u32 sTableIndex;
public:

View File

@ -7,8 +7,7 @@
#include "CToken.hpp"
namespace urde {
const CCollisionPrimitive::Type CCollidableOBBTreeGroup::sType(CCollidableOBBTreeGroup::SetStaticTableIndex,
"CCollidableOBBTreeGroup");
constexpr CCollisionPrimitive::Type sType(CCollidableOBBTreeGroup::SetStaticTableIndex, "CCollidableOBBTreeGroup");
u32 CCollidableOBBTreeGroup::sTableIndex = -1;
CCollidableOBBTreeGroupContainer::CCollidableOBBTreeGroupContainer(CInputStream& in) {

View File

@ -24,7 +24,6 @@ public:
};
class CCollidableOBBTreeGroup : public CCollisionPrimitive {
static const Type sType;
static u32 sTableIndex;
const CCollidableOBBTreeGroupContainer* x10_container;

View File

@ -5,7 +5,7 @@
#include "CInternalRayCastStructure.hpp"
namespace urde {
const CCollisionPrimitive::Type CCollidableSphere::sType(CCollidableSphere::SetStaticTableIndex, "CCollidableSphere");
constexpr CCollisionPrimitive::Type sType(CCollidableSphere::SetStaticTableIndex, "CCollidableSphere");
u32 CCollidableSphere::sTableIndex = -1;
namespace Collide {
@ -224,6 +224,8 @@ CRayCastResult CCollidableSphere::CastRayInternal(const CInternalRayCastStructur
return {};
}
const CCollisionPrimitive::Type& CCollidableSphere::GetType() { return sType; }
bool CCollidableSphere::CollideMovingAABox(const CInternalCollisionStructure& collision, const zeus::CVector3f& dir,
double& dOut, CCollisionInfo& infoOut) {
const CCollidableSphere& p0 = static_cast<const CCollidableSphere&>(collision.GetLeft().GetPrim());

View File

@ -12,8 +12,8 @@ bool Sphere_AABox_Bool(const CInternalCollisionStructure&);
bool Sphere_Sphere(const CInternalCollisionStructure&, CCollisionInfoList&);
bool Sphere_Sphere_Bool(const CInternalCollisionStructure&);
} // namespace Collide
class CCollidableSphere : public CCollisionPrimitive {
static const Type sType;
static u32 sTableIndex;
zeus::CSphere x10_sphere;
@ -31,7 +31,7 @@ public:
FourCC GetPrimType() const override;
CRayCastResult CastRayInternal(const CInternalRayCastStructure&) const override;
static const Type& GetType() { return sType; }
static const Type& GetType();
static void SetStaticTableIndex(u32 index) { sTableIndex = index; }
static bool CollideMovingAABox(const CInternalCollisionStructure&, const zeus::CVector3f&, double&, CCollisionInfo&);
static bool CollideMovingSphere(const CInternalCollisionStructure&, const zeus::CVector3f&, double&, CCollisionInfo&);