7class ObjectAmi final :
public ObjectDrivable {
10 ~ObjectAmi()
override;
13 void init()
override {}
16 void calc()
override {}
24 void createCollision()
override {}
27 void calcCollisionTransform()
override {}
30 [[nodiscard]] f32 getCollisionRadius()
const override {
34 [[nodiscard]]
bool checkPointPartial(
const EGG::Vector3f &v0,
const EGG::Vector3f &v1,
35 KCLTypeMask flags, CollisionInfoPartial *pInfo, KCLTypeMask *pFlagsOut)
override;
36 [[nodiscard]]
bool checkPointPartialPush(
const EGG::Vector3f &v0,
const EGG::Vector3f &v1,
37 KCLTypeMask flags, CollisionInfoPartial *pInfo, KCLTypeMask *pFlagsOut)
override;
38 [[nodiscard]]
bool checkPointFull(
const EGG::Vector3f &v0,
const EGG::Vector3f &v1,
39 KCLTypeMask flags, CollisionInfo *pInfo, KCLTypeMask *pFlagsOut)
override;
40 [[nodiscard]]
bool checkPointFullPush(
const EGG::Vector3f &v0,
const EGG::Vector3f &v1,
41 KCLTypeMask flags, CollisionInfo *pInfo, KCLTypeMask *pFlagsOut)
override;
42 [[nodiscard]]
bool checkSpherePartial(f32 radius,
const EGG::Vector3f &v0,
43 const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfoPartial *pInfo,
44 KCLTypeMask *pFlagsOut, u32 timeOffset)
override;
45 [[nodiscard]]
bool checkSpherePartialPush(f32 radius,
const EGG::Vector3f &v0,
46 const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfoPartial *pInfo,
47 KCLTypeMask *pFlagsOut, u32 timeOffset)
override;
48 [[nodiscard]]
bool checkSphereFull(f32 radius,
const EGG::Vector3f &v0,
const EGG::Vector3f &v1,
49 KCLTypeMask flags, CollisionInfo *pInfo, KCLTypeMask *pFlagsOut,
50 u32 timeOffset)
override;
51 [[nodiscard]]
bool checkSphereFullPush(f32 radius,
const EGG::Vector3f &v0,
52 const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfo *pInfo,
53 KCLTypeMask *pFlagsOut, u32 timeOffset)
override;
54 [[nodiscard]]
bool checkPointCachedPartial(
const EGG::Vector3f &v0,
const EGG::Vector3f &v1,
55 KCLTypeMask flags, CollisionInfoPartial *pInfo, KCLTypeMask *pFlagsOut)
override;
56 [[nodiscard]]
bool checkPointCachedPartialPush(
const EGG::Vector3f &v0,
const EGG::Vector3f &v1,
57 KCLTypeMask flags, CollisionInfoPartial *pInfo, KCLTypeMask *pFlagsOut)
override;
58 [[nodiscard]]
bool checkPointCachedFull(
const EGG::Vector3f &v0,
const EGG::Vector3f &v1,
59 KCLTypeMask flags, CollisionInfo *pInfo, KCLTypeMask *pFlagsOut)
override;
60 [[nodiscard]]
bool checkPointCachedFullPush(
const EGG::Vector3f &v0,
const EGG::Vector3f &v1,
61 KCLTypeMask flags, CollisionInfo *pInfo, KCLTypeMask *pFlagsOut)
override;
62 [[nodiscard]]
bool checkSphereCachedPartial(f32 radius,
const EGG::Vector3f &v0,
63 const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfoPartial *pInfo,
64 KCLTypeMask *pFlagsOut, u32 timeOffset)
override;
65 [[nodiscard]]
bool checkSphereCachedPartialPush(f32 radius,
const EGG::Vector3f &v0,
66 const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfoPartial *pInfo,
67 KCLTypeMask *pFlagsOut, u32 timeOffset)
override;
68 [[nodiscard]]
bool checkSphereCachedFull(f32 radius,
const EGG::Vector3f &v0,
69 const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfo *pInfo,
70 KCLTypeMask *pFlagsOut, u32 timeOffset)
override;
71 [[nodiscard]]
bool checkSphereCachedFullPush(f32 radius,
const EGG::Vector3f &v0,
72 const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfo *pInfo,
73 KCLTypeMask *pFlagsOut, u32 timeOffset)
override;
76 [[nodiscard]]
bool checkSpherePartialImpl(f32 radius,
const EGG::Vector3f &v0,
77 const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfoPartial *pInfo,
78 KCLTypeMask *pFlagsOut, u32 timeOffset);
79 [[nodiscard]]
bool checkSpherePartialPushImpl(f32 radius,
const EGG::Vector3f &v0,
80 const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfoPartial *pInfo,
81 KCLTypeMask *pFlagsOut, u32 timeOffset);
82 [[nodiscard]]
bool checkSphereFullImpl(f32 radius,
const EGG::Vector3f &v0,
83 const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfo *pInfo,
84 KCLTypeMask *pFlagsOut, u32 timeOffset);
85 [[nodiscard]]
bool checkSphereFullPushImpl(f32 radius,
const EGG::Vector3f &v0,
86 const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfo *pInfo,
87 KCLTypeMask *pFlagsOut, u32 timeOffset);
90 requires std::is_same_v<T, CollisionInfo> || std::is_same_v<T, CollisionInfoPartial>
91 [[nodiscard]]
bool checkSphereImpl(f32 radius,
const EGG::Vector3f &v0,
const EGG::Vector3f &v1,
92 KCLTypeMask flags, T *pInfo, KCLTypeMask *pFlagsOut, u32 timeOffset,
bool push);
94 [[nodiscard]]
bool checkCollision(f32 radius,
const EGG::Vector3f &vel, u32 time,
95 EGG::Vector3f &bbox, EGG::Vector3f &fnrm, f32 &dist);
97 [[nodiscard]]
static f32
SpatialSin(f32 phase);
100 static constexpr EGG::Vector3f DIMS = EGG::Vector3f(2600.0f, 2000.0f, 13800.0f);