23 void checkCourseColNarrScLocal(f32 radius,
const EGG::Vector3f &pos, KCLTypeMask mask,
27 KCLTypeMask flags,
CollisionInfo *pInfo, KCLTypeMask *pFlagsOut, u32 timeOffset);
28 [[nodiscard]]
bool checkSphereFullPush(f32 radius,
const EGG::Vector3f &v0,
30 KCLTypeMask *pFlagsOut, u32 timeOffset);
32 [[nodiscard]]
bool checkSphereCachedPartial(f32 radius,
const EGG::Vector3f &pos,
34 KCLTypeMask *typeMaskOut, u32 timeOffset);
35 [[nodiscard]]
bool checkSphereCachedPartialPush(f32 radius,
const EGG::Vector3f &pos,
37 KCLTypeMask *typeMaskOut, u32 timeOffset);
38 [[nodiscard]]
bool checkSphereCachedFullPush(f32 radius,
const EGG::Vector3f &pos,
40 KCLTypeMask *typeMaskOut, u32 timeOffset);
42 void resetCollisionEntries(KCLTypeMask *ptr);
49 ASSERT(m_collisionEntryCount > 0);
50 u16 &entryAttr = m_entries[m_collisionEntryCount - 1].attribute;
51 entryAttr = (entryAttr & 0xff1f) | (attribute << 5);
58 ASSERT(m_collisionEntryCount > 0);
59 u16 &entryAttr = m_entries[m_collisionEntryCount - 1].attribute;
63 entryAttr |= (1 << 0xd);
70 [[nodiscard]]
const CollisionEntry *closestCollisionEntry()
const {
71 return m_closestCollisionEntry;
75 static CollisionDirector *CreateInstance();
76 static void DestroyInstance();
78 [[nodiscard]]
static CollisionDirector *Instance() {
84 ~CollisionDirector()
override;
86 const CollisionEntry *m_closestCollisionEntry;
87 std::array<CollisionEntry, COLLISION_ARR_LENGTH> m_entries;
88 size_t m_collisionEntryCount;
90 static CollisionDirector *s_instance;
void pushCollisionEntry(f32 dist, KCLTypeMask *typeMask, KCLTypeMask kclTypeBit, u16 attribute)
Called when we find a piece of collision we are touching and want to save it temporarily.