A reimplementation of Mario Kart Wii's physics engine in C++
Loading...
Searching...
No Matches
ObjectWLWallGC.hh
1#pragma once
2
3#include "game/field/obj/ObjectKCL.hh"
4
5namespace Field {
6
7class ObjectWLWallGC : public ObjectKCL {
8public:
10 ~ObjectWLWallGC() override;
11
12 void init() override;
13 void calc() override;
14
16 [[nodiscard]] u32 loadFlags() const override {
17 return 1;
18 }
19
20 [[nodiscard]] const EGG::Matrix34f &getUpdatedMatrix(u32 timeOffset) override;
21
23 [[nodiscard]] f32 colRadiusAdditionalLength() const override {
24 return (m_initialPos - m_targetPos).length();
25 }
26
27 [[nodiscard]] bool checkCollision(f32 radius, const EGG::Vector3f &pos,
28 const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfo *info,
29 KCLTypeMask *maskOut, u32 timeOffset) override;
30 [[nodiscard]] bool checkCollisionCached(f32 radius, const EGG::Vector3f &pos,
31 const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfo *info,
32 KCLTypeMask *maskOut, u32 timeOffset) override;
33
34private:
36 [[nodiscard]] u32 cycleFrame(s32 t) const {
37 u32 time = t < m_startFrame ? 0 : t - m_startFrame;
38 return time % m_cycleDuration;
39 }
40
41 s32 m_extendedDuration;
42 u32 m_moveDuration;
43 s32 m_startFrame;
44 s32 m_hiddenDuration;
45 s32 m_extendedFrame;
46 s32 m_retractingFrame;
47 s32 m_cycleDuration;
48 EGG::Vector3f m_initialPos;
49 EGG::Vector3f m_targetPos;
50 EGG::Matrix34f m_currTransform;
51};
52
53} // namespace Field
A 3 x 4 matrix.
Definition Matrix.hh:8
Pertains to collision.
A 3D float vector.
Definition Vector.hh:83