36 [[nodiscard]]
bool checkSphereFullPush(f32 radius,
const EGG::Vector3f &v0,
40 [[nodiscard]]
bool checkSphereCachedPartial(f32 radius,
const EGG::Vector3f &pos,
43 [[nodiscard]]
bool checkSphereCachedPartialPush(f32 radius,
const EGG::Vector3f &pos,
46 [[nodiscard]]
bool checkSphereCachedFullPush(f32 radius,
const EGG::Vector3f &pos,
57 ASSERT(m_collisionEntryCount > 0);
58 u16 &entryAttr = m_entries[m_collisionEntryCount - 1].attribute;
59 entryAttr = (entryAttr & 0xff1f) | (attribute << 5);
66 ASSERT(m_collisionEntryCount > 0);
67 u16 &entryAttr = m_entries[m_collisionEntryCount - 1].attribute;
71 entryAttr |= (1 << 0xd);
78 [[nodiscard]]
const CollisionEntry *closestCollisionEntry()
const {
79 return m_closestCollisionEntry;
83 static CollisionDirector *CreateInstance();
84 static void DestroyInstance();
86 [[nodiscard]]
static CollisionDirector *Instance() {
92 ~CollisionDirector()
override;
94 const CollisionEntry *m_closestCollisionEntry;
95 std::array<CollisionEntry, COLLISION_ARR_LENGTH> m_entries;
96 size_t m_collisionEntryCount;
98 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.
Contexts can be used to restore a previous memory state for the current session.