20class ObjectObakeManager :
public ObjectDrivable {
23 ~ObjectObakeManager()
override;
28 [[nodiscard]] u32 loadFlags()
const override {
33 void createCollision()
override {}
36 void calcCollisionTransform()
override {}
39 [[nodiscard]] f32 getCollisionRadius()
const override {
48 KCLTypeMask mask,
CollisionInfo *info, KCLTypeMask *maskOut)
override;
50 KCLTypeMask mask,
CollisionInfo *info, KCLTypeMask *maskOut)
override;
52 [[nodiscard]]
bool checkSpherePartial(f32 radius,
const EGG::Vector3f &pos,
54 KCLTypeMask *maskOut, u32 timeOffset)
override;
55 [[nodiscard]]
bool checkSpherePartialPush(f32 radius,
const EGG::Vector3f &pos,
57 KCLTypeMask *maskOut, u32 timeOffset)
override;
58 [[nodiscard]]
bool checkSphereFull(f32 radius,
const EGG::Vector3f &pos,
60 KCLTypeMask *maskOut, u32 timeOffset)
override;
61 [[nodiscard]]
bool checkSphereFullPush(f32 radius,
const EGG::Vector3f &pos,
63 KCLTypeMask *maskOut, u32 timeOffset)
override;
65 [[nodiscard]]
bool checkPointCachedPartial(
const EGG::Vector3f &pos,
67 KCLTypeMask *maskOut)
override;
68 [[nodiscard]]
bool checkPointCachedPartialPush(
const EGG::Vector3f &pos,
70 KCLTypeMask *maskOut)
override;
72 KCLTypeMask mask,
CollisionInfo *info, KCLTypeMask *maskOut)
override;
73 [[nodiscard]]
bool checkPointCachedFullPush(
const EGG::Vector3f &pos,
75 KCLTypeMask *maskOut)
override;
77 [[nodiscard]]
bool checkSphereCachedPartial(f32 radius,
const EGG::Vector3f &pos,
79 KCLTypeMask *maskOut, u32 timeOffset)
override;
80 [[nodiscard]]
bool checkSphereCachedPartialPush(f32 radius,
const EGG::Vector3f &pos,
82 KCLTypeMask *maskOut, u32 timeOffset)
override;
83 [[nodiscard]]
bool checkSphereCachedFull(f32 radius,
const EGG::Vector3f &pos,
85 KCLTypeMask *maskOut, u32 timeOffset)
override;
86 [[nodiscard]]
bool checkSphereCachedFullPush(f32 radius,
const EGG::Vector3f &pos,
88 KCLTypeMask *maskOut, u32 timeOffset)
override;
93 static constexpr size_t CACHE_SIZE_X = 122;
94 static constexpr size_t CACHE_SIZE_Z = 116;
95 static constexpr f32 SPECIAL_WALL_BOUNDING_RADIUS = 85.0f;
99 [[nodiscard]]
bool checkSpherePartialImpl(f32 radius,
const EGG::Vector3f &pos,
101 KCLTypeMask *maskOut);
102 [[nodiscard]]
bool checkSpherePartialPushImpl(f32 radius,
const EGG::Vector3f &pos,
104 KCLTypeMask *maskOut);
105 [[nodiscard]]
bool checkSphereFullImpl(f32 radius,
const EGG::Vector3f &pos,
107 KCLTypeMask *maskOut);
108 [[nodiscard]]
bool checkSphereFullPushImpl(f32 radius,
const EGG::Vector3f &pos,
110 KCLTypeMask *maskOut);
118 std::array<std::array<ObjectObakeBlock *, CACHE_SIZE_X>, CACHE_SIZE_Z>
m_blockCache;