mirror of
https://github.com/PrimeDecomp/prime.git
synced 2025-12-16 04:17:02 +00:00
Start matching CScriptPlatform; more CScriptMazeNode
Former-commit-id: 135d63412c
This commit is contained in:
24
include/Collision/CCollidableAABox.hpp
Normal file
24
include/Collision/CCollidableAABox.hpp
Normal file
@@ -0,0 +1,24 @@
|
||||
#ifndef _CCOLLIDABLEAABOX_HPP
|
||||
#define _CCOLLIDABLEAABOX_HPP
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#include "Collision/CCollisionPrimitive.hpp"
|
||||
|
||||
class CCollidableAABox : public CCollisionPrimitive {
|
||||
public:
|
||||
// TODO
|
||||
|
||||
u32 GetTableIndex() const override;
|
||||
CAABox CalculateAABox(const CTransform4f&) const override;
|
||||
CAABox CalculateLocalAABox() const override;
|
||||
FourCC GetPrimType() const override;
|
||||
~CCollidableAABox() override;
|
||||
CRayCastResult CastRayInternal(const CInternalRayCastStructure&) const;
|
||||
|
||||
private:
|
||||
CAABox x10_aabb;
|
||||
};
|
||||
CHECK_SIZEOF(CCollidableAABox, 0x28)
|
||||
|
||||
#endif
|
||||
36
include/Collision/CCollisionPrimitive.hpp
Normal file
36
include/Collision/CCollisionPrimitive.hpp
Normal file
@@ -0,0 +1,36 @@
|
||||
#ifndef _CCOLLISIONPRIMITIVE_HPP
|
||||
#define _CCOLLISIONPRIMITIVE_HPP
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#include "Collision/CMaterialList.hpp"
|
||||
|
||||
#include "Kyoto/IObjectStore.hpp"
|
||||
#include "Kyoto/Math/CAABox.hpp"
|
||||
#include "Kyoto/Math/CTransform4f.hpp"
|
||||
|
||||
class CRayCastResult;
|
||||
class CInternalRayCastStructure;
|
||||
|
||||
class CCollisionPrimitive {
|
||||
public:
|
||||
CCollisionPrimitive(const CMaterialList& list);
|
||||
|
||||
virtual u32 GetTableIndex() const = 0;
|
||||
virtual void SetMaterial(const CMaterialList&);
|
||||
virtual const CMaterialList& GetMaterial() const;
|
||||
virtual CAABox CalculateAABox(const CTransform4f&) const = 0;
|
||||
virtual CAABox CalculateLocalAABox() const = 0;
|
||||
virtual FourCC GetPrimType() const = 0;
|
||||
virtual ~CCollisionPrimitive();
|
||||
virtual CRayCastResult CastRayInternal(const CInternalRayCastStructure&) const = 0;
|
||||
|
||||
private:
|
||||
uint x4_;
|
||||
CMaterialList x8_material;
|
||||
};
|
||||
CHECK_SIZEOF(CCollisionPrimitive, 0x10)
|
||||
|
||||
inline CCollisionPrimitive::~CCollisionPrimitive() {}
|
||||
|
||||
#endif
|
||||
@@ -73,12 +73,33 @@ class CMaterialList {
|
||||
public:
|
||||
CMaterialList() : value(0) {}
|
||||
CMaterialList(const EMaterialTypes& material) : value(0) { value |= u64(1) << material; }
|
||||
// TODO
|
||||
CMaterialList(const EMaterialTypes& m1, const EMaterialTypes& m2);
|
||||
CMaterialList(const EMaterialTypes& m1, const EMaterialTypes& m2, const EMaterialTypes& m3);
|
||||
CMaterialList(const EMaterialTypes& m1, const EMaterialTypes& m2, const EMaterialTypes& m3, const EMaterialTypes& m4);
|
||||
CMaterialList(const EMaterialTypes& m1, const EMaterialTypes& m2, const EMaterialTypes& m3, const EMaterialTypes& m4,
|
||||
const EMaterialTypes& m5);
|
||||
CMaterialList(const EMaterialTypes& m1, const EMaterialTypes& m2) : value(0) {
|
||||
value |= u64(1) << m1;
|
||||
value |= u64(1) << m2;
|
||||
}
|
||||
CMaterialList(const EMaterialTypes& m1, const EMaterialTypes& m2, const EMaterialTypes& m3)
|
||||
: value(0) {
|
||||
value |= u64(1) << m1;
|
||||
value |= u64(1) << m2;
|
||||
value |= u64(1) << m3;
|
||||
}
|
||||
CMaterialList(const EMaterialTypes& m1, const EMaterialTypes& m2, const EMaterialTypes& m3,
|
||||
const EMaterialTypes& m4)
|
||||
: value(0) {
|
||||
value |= u64(1) << m1;
|
||||
value |= u64(1) << m2;
|
||||
value |= u64(1) << m3;
|
||||
value |= u64(1) << m4;
|
||||
}
|
||||
CMaterialList(const EMaterialTypes& m1, const EMaterialTypes& m2, const EMaterialTypes& m3,
|
||||
const EMaterialTypes& m4, const EMaterialTypes& m5)
|
||||
: value(0) {
|
||||
value |= u64(1) << m1;
|
||||
value |= u64(1) << m2;
|
||||
value |= u64(1) << m3;
|
||||
value |= u64(1) << m4;
|
||||
value |= u64(1) << m5;
|
||||
}
|
||||
CMaterialList(u64 value) : value(value) {}
|
||||
|
||||
void Add(EMaterialTypes material) { value |= u64(1) << material; }
|
||||
|
||||
27
include/Collision/CRayCastResult.hpp
Normal file
27
include/Collision/CRayCastResult.hpp
Normal file
@@ -0,0 +1,27 @@
|
||||
#ifndef _CRAYCASTRESULT_HPP
|
||||
#define _CRAYCASTRESULT_HPP
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#include "Kyoto/Math/CPlane.hpp"
|
||||
#include "Kyoto/Math/CVector3f.hpp"
|
||||
|
||||
#include "Collision/CMaterialList.hpp"
|
||||
|
||||
class CRayCastResult {
|
||||
public:
|
||||
enum EInvalid {
|
||||
kI_Invalid,
|
||||
kI_Valid,
|
||||
};
|
||||
|
||||
private:
|
||||
f32 x0_t;
|
||||
CVector3f x4_point;
|
||||
CPlane x10_plane;
|
||||
EInvalid x20_invalid;
|
||||
CMaterialList x28_material;
|
||||
};
|
||||
CHECK_SIZEOF(CRayCastResult, 0x30)
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user