25 [[nodiscard]] ObjectId id()
const override {
26 return ObjectId::Escalator;
30 [[nodiscard]] u32 loadFlags()
const override {
39 KCLTypeMask mask,
CollisionInfo *info, KCLTypeMask *maskOut)
override;
41 KCLTypeMask mask,
CollisionInfo *info, KCLTypeMask *maskOut)
override;
42 [[nodiscard]]
bool checkSpherePartial(f32 radius,
const EGG::Vector3f &pos,
44 KCLTypeMask *maskOut, u32 timeOffset)
override;
45 [[nodiscard]]
bool checkSpherePartialPush(f32 radius,
const EGG::Vector3f &pos,
47 KCLTypeMask *maskOut, u32 timeOffset)
override;
48 [[nodiscard]]
bool checkSphereFull(f32 radius,
const EGG::Vector3f &pos,
50 KCLTypeMask *maskOut, u32 timeOffset)
override;
51 [[nodiscard]]
bool checkSphereFullPush(f32 radius,
const EGG::Vector3f &pos,
53 KCLTypeMask *maskOut, u32 timeOffset)
override;
54 void narrScLocal(f32 radius,
const EGG::Vector3f &pos, KCLTypeMask mask,
55 u32 timeOffset)
override;
56 [[nodiscard]]
bool checkPointCachedPartial(
const EGG::Vector3f &pos,
58 KCLTypeMask *maskOut)
override;
59 [[nodiscard]]
bool checkPointCachedPartialPush(
const EGG::Vector3f &pos,
61 KCLTypeMask *maskOut)
override;
63 KCLTypeMask mask,
CollisionInfo *info, KCLTypeMask *maskOut)
override;
64 [[nodiscard]]
bool checkPointCachedFullPush(
const EGG::Vector3f &pos,
66 KCLTypeMask *maskOut)
override;
67 [[nodiscard]]
bool checkSphereCachedPartial(f32 radius,
const EGG::Vector3f &pos,
69 KCLTypeMask *maskOut, u32 timeOffset)
override;
70 [[nodiscard]]
bool checkSphereCachedPartialPush(f32 radius,
const EGG::Vector3f &pos,
72 KCLTypeMask *maskOut, u32 timeOffset)
override;
73 [[nodiscard]]
bool checkSphereCachedFull(f32 radius,
const EGG::Vector3f &pos,
75 KCLTypeMask *maskOut, u32 timeOffset)
override;
76 [[nodiscard]]
bool checkSphereCachedFullPush(f32 radius,
const EGG::Vector3f &pos,
78 KCLTypeMask *maskOut, u32 timeOffset)
override;
80 [[nodiscard]]
const EGG::Matrix34f &getUpdatedMatrix(u32 timeOffset)
override;
83 [[nodiscard]] f32 colRadiusAdditionalLength()
const override {
87 [[nodiscard]]
bool checkCollision(f32 radius,
const EGG::Vector3f &pos,
89 KCLTypeMask *maskOut, u32 timeOffset)
override;
90 [[nodiscard]]
bool checkCollisionCached(f32 radius,
const EGG::Vector3f &pos,
92 KCLTypeMask *maskOut, u32 timeOffset)
override;
98 requires std::is_same_v<T, CollisionInfo> || std::is_same_v<T, CollisionInfoPartial>
100 const EGG::Vector3f &prevPos, KCLTypeMask mask, T *info, KCLTypeMask *maskOut);
102 template <
typename T>
103 requires std::is_same_v<T, CollisionInfo> || std::is_same_v<T, CollisionInfoPartial>
105 const EGG::Vector3f &prevPos, KCLTypeMask mask, T *info, KCLTypeMask *maskOut);
107 template <
typename T>
108 requires std::is_same_v<T, CollisionInfo> || std::is_same_v<T, CollisionInfoPartial>
109 [[nodiscard]]
bool checkPointImpl(ShouldCheckFunc shouldCheckFunc, CheckPointFunc<T> checkFunc,
111 KCLTypeMask *maskOut);
113 template <
typename T>
114 requires std::is_same_v<T, CollisionInfo> || std::is_same_v<T, CollisionInfoPartial>
115 [[nodiscard]]
bool checkSphereImpl(ShouldCheckFunc shouldCheckFunc,
116 CheckSphereFunc<T> checkFunc, f32 radius,
const EGG::Vector3f &pos,
117 const EGG::Vector3f &prevPos, KCLTypeMask mask, T *info, KCLTypeMask *maskOut,
120 [[nodiscard]] f32 calcStepFactor(s32 t);
121 [[nodiscard]] f32 calcSpeed(s32 t);
137 const f32 m_midDuration;
145 static constexpr f32 STANDSTILL_FRAMES = 50.0f;
148 static constexpr f32 MIN_HEIGHT_OFFSET = 0.5f * (17.5f *
STEP_HEIGHT);