#include <ObjectDossun.hh>
Base class for the various different Thwomp types in the game.
On initialization, the game pre-calculates how many frames it takes for the Thwomp to stomp down and hit the floor. If a Thwomp is positioned such that there is no floor beneath it, then the init function will be stuck in an infinite loop, causing the race to never start.
Definition at line 11 of file ObjectDossun.hh.
Public Member Functions | |
| ObjectDossun (const System::MapdataGeoObj ¶ms) | |
| void | init () override |
| u32 | loadFlags () const override |
| void | calcCollisionTransform () override |
| Kart::Reaction | onCollision (Kart::KartObject *kartObj, Kart::Reaction reactionOnKart, Kart::Reaction reactionOnObj, EGG::Vector3f &hitDepth) override |
| void | initState () |
| void | calcStomp () |
| virtual void | startStill () |
| void | startGrounded () |
Public Member Functions inherited from Field::ObjectCollidable | |
| ObjectCollidable (const System::MapdataGeoObj ¶ms) | |
| ObjectCollidable (const char *name, const EGG::Vector3f &pos, const EGG::Vector3f &rot, const EGG::Vector3f &scale) | |
| void | load () override |
| f32 | getCollisionRadius () const override |
| Finds the radius that fits fully in a BoxColUnit. | |
| virtual void | loadAABB (f32 maxSpeed) |
| virtual void | loadAABB (f32 radius, f32 maxSpeed) |
| virtual void | processKartReactions (Kart::KartObject *kartObj, Kart::Reaction &reactionOnKart, Kart::Reaction &reactionOnObj) |
| virtual void | onWallCollision (Kart::KartObject *, const EGG::Vector3f &) |
| virtual void | onObjectCollision (Kart::KartObject *) |
| virtual bool | checkCollision (ObjectCollisionBase *lhs, EGG::Vector3f &dist) |
| virtual const EGG::Vector3f & | getCollisionTranslation () const |
| virtual ObjectCollisionBase * | collision () const |
Public Member Functions inherited from Field::ObjectBase | |
| ObjectBase (const System::MapdataGeoObj ¶ms) | |
| ObjectBase (const char *name, const EGG::Vector3f &pos, const EGG::Vector3f &rot, const EGG::Vector3f &scale) | |
| virtual void | calc () |
| virtual void | calcModel () |
| virtual const char * | getResources () const |
| virtual void | loadGraphics () |
| virtual void | loadAnims () |
| virtual void | loadRail () |
| virtual const char * | getName () const |
| virtual const char * | getKclName () const |
| virtual void | resize (f32 radius, f32 maxSpeed) |
| virtual void | unregisterCollision () |
| virtual void | disableCollision () const |
| virtual void | enableCollision () const |
| virtual const BoxColUnit * | getUnit () const |
| const RailInterpolator * | railInterpolator () const |
| virtual const EGG::Vector3f & | getPosition () const |
| virtual ObjectId | id () const |
| const EGG::Vector3f & | pos () const |
| void | setPos (const EGG::Vector3f &pos) |
| void | setScale (const EGG::Vector3f &scale) |
| void | setTransform (const EGG::Matrix34f &mat) |
| const EGG::Vector3f & | scale () const |
Protected Types | |
| enum class | AnmState { Still = 0 , BeforeFall = 1 , Falling = 2 , Grounded = 3 , Rising = 4 } |
| Represents the current movement state of the Thwomp in terms of its stomp. More... | |
| enum class | StompState { Inactive = 0 , Active = 1 } |
Protected Attributes | |
| StompState | m_stompState |
| AnmState | m_anmState |
| s32 | m_beforeFallTimer |
| Number of frames until the Thwomp will stomp down. | |
| s32 | m_stillTimer |
| Number of frames the Thwomp will remain stationary (or shakes) | |
| s32 | m_groundedTimer |
| Number of frames the Thwomp remains on the ground. | |
| s32 | m_shakePhase |
| Causes the Thwomp's position to shake at the end of the "still" state. | |
| f32 | m_vel |
| Vector3f in the base game, but only the y-component is used. | |
| f32 | m_initialPosY |
| u32 | m_fullDuration |
| Framecount of an entire animation loop. | |
| s32 | m_cycleTimer |
| f32 | m_currRot |
| bool | m_touchingGround |
Protected Attributes inherited from Field::ObjectCollidable | |
| ObjectCollisionBase * | m_collision |
Protected Attributes inherited from Field::ObjectBase | |
| Render::DrawMdl * | m_drawMdl |
| Abstract::g3d::ResFile * | m_resFile |
| ObjectId | m_id |
| RailInterpolator * | m_railInterpolator |
| BoxColUnit * | m_boxColUnit |
| Flags | m_flags |
| EGG::Vector3f | m_pos |
| EGG::Vector3f | m_scale |
| EGG::Vector3f | m_rot |
| bool | m_rotLock |
| EGG::Matrix34f | m_transform |
| const System::MapdataGeoObj * | m_mapObj |
Static Protected Attributes | |
| static constexpr u32 | BEFORE_FALL_DURATION = 10 |
| The total number of frames the thwomp rises before crashing down. | |
Private Member Functions | |
| void | calcBeforeFall () |
| void | calcFalling () |
| void | calcGrounded () |
| void | calcRising () |
| void | checkFloorCollision () |
Static Private Attributes | |
| static constexpr u32 | GROUND_DURATION = 60 |
| static constexpr u32 | STOMP_ACCEL = 17.0f |
| static constexpr f32 | STOMP_RADIUS = 20.0f |
| static constexpr EGG::Vector3f | STOMP_POS_OFFSET = EGG::Vector3f(0.0f, STOMP_RADIUS, 0.0f) |
| static constexpr f32 | RISING_VEL = 10.0f |
Additional Inherited Members | |
Public Types inherited from Field::ObjectBase | |
| enum class | eFlags { Position = 0 , Rotation = 1 , Matrix = 2 , Scale = 3 } |
| typedef EGG::TBitFlag< u16, eFlags > | Flags |
Protected Member Functions inherited from Field::ObjectCollidable | |
| void | createCollision () override |
| virtual const EGG::Vector3f & | collisionCenter () const |
| void | registerManagedObject () |
Protected Member Functions inherited from Field::ObjectBase | |
| void | calcTransform () |
| void | calcRotLock () |
| void | linkAnims (const std::span< const char * > &names, const std::span< Render::AnmType > types) |
| void | setMatrixTangentTo (const EGG::Vector3f &up, const EGG::Vector3f &tangent) |
| void | setMatrixFromOrthonormalBasisAndPos (const EGG::Vector3f &v) |
Static Protected Member Functions inherited from Field::ObjectBase | |
| static f32 | CheckPointAgainstLineSegment (const EGG::Vector3f &point, const EGG::Vector3f &a, const EGG::Vector3f &b) |
| Calculates on what side of line segment ab point lies. | |
| static EGG::Vector3f | RotateXZByYaw (f32 angle, const EGG::Vector3f &v) |
| Rotates a vector around the Y-axis and returns the XZ-plane portion of the vector. | |
| static EGG::Vector3f | RotateAxisAngle (f32 angle, const EGG::Vector3f &axis, const EGG::Vector3f &v1) |
| static void | SetRotTangentHorizontal (EGG::Matrix34f &mat, const EGG::Vector3f &up, const EGG::Vector3f &tangent) |
| static EGG::Matrix34f | OrthonormalBasis (const EGG::Vector3f &v) |
| static EGG::Matrix34f | RailOrthonormalBasis (const RailInterpolator &railInterpolator) |
| static EGG::Vector3f | AdjustVecForward (f32 sidewaysScalar, f32 forwardScalar, f32 minSpeed, const EGG::Vector3f &src, EGG::Vector3f forward) |
| static f32 | CalcParabolicDisplacement (f32 initVel, f32 accel, u32 frame) |
| Solves the standard kinematic equation \(y(t) = v_0\, t - \frac{1}{2} a t^{2}\). | |
| static EGG::Vector3f | Interpolate (f32 t, const EGG::Vector3f &v0, const EGG::Vector3f &v1) |
|
strongprotected |
Represents the current movement state of the Thwomp in terms of its stomp.
| Enumerator | |
|---|---|
| BeforeFall | The quick upwards motion before slamming down. |
| Falling | Slamming down. |
| Grounded | Contacting the floor. |
| Rising | Resetting. |
Definition at line 46 of file ObjectDossun.hh.
|
strongprotected |
Definition at line 54 of file ObjectDossun.hh.
|
0x80764510 |
Definition at line 11 of file ObjectDossun.cc.
|
private0x8075F3F4 |
Definition at line 153 of file ObjectDossun.cc.
|
overridevirtual0x807648A4 |
Reimplemented from Field::ObjectCollidable.
Definition at line 84 of file ObjectDossun.cc.
|
private0x8075F430 |
Definition at line 165 of file ObjectDossun.cc.
|
inlineprivate0x8075F460 |
Definition at line 80 of file ObjectDossun.hh.
|
inlineprivate0x8075F4D8 |
Definition at line 87 of file ObjectDossun.hh.
|
0x8075F254 |
Definition at line 129 of file ObjectDossun.cc.
|
private0x8075F76C |
Definition at line 174 of file ObjectDossun.cc.
|
overridevirtual0x8075EEA8 |
Reimplemented from Field::ObjectBase.
Definition at line 18 of file ObjectDossun.cc.
|
0x8075F21C |
Definition at line 117 of file ObjectDossun.cc.
|
inlinenodiscardoverridevirtual |
Reimplemented from Field::ObjectBase.
Definition at line 18 of file ObjectDossun.hh.
|
overridevirtual0x8075FF98 |
Reimplemented from Field::ObjectCollidable.
Definition at line 100 of file ObjectDossun.cc.
|
inline0x8075FE8C |
Definition at line 39 of file ObjectDossun.hh.
|
inlinevirtual0x8075FB50 |
Definition at line 30 of file ObjectDossun.hh.
|
staticconstexprprotected |
The total number of frames the thwomp rises before crashing down.
Definition at line 73 of file ObjectDossun.hh.
|
staticconstexprprivate |
Definition at line 94 of file ObjectDossun.hh.
|
protected |
Definition at line 60 of file ObjectDossun.hh.
|
protected |
Number of frames until the Thwomp will stomp down.
Definition at line 61 of file ObjectDossun.hh.
|
protected |
Definition at line 69 of file ObjectDossun.hh.
|
protected |
Definition at line 68 of file ObjectDossun.hh.
|
protected |
Framecount of an entire animation loop.
Definition at line 67 of file ObjectDossun.hh.
|
protected |
Number of frames the Thwomp remains on the ground.
Definition at line 63 of file ObjectDossun.hh.
|
protected |
Definition at line 66 of file ObjectDossun.hh.
|
protected |
Causes the Thwomp's position to shake at the end of the "still" state.
Definition at line 64 of file ObjectDossun.hh.
|
protected |
Number of frames the Thwomp will remain stationary (or shakes)
Definition at line 62 of file ObjectDossun.hh.
|
protected |
Definition at line 59 of file ObjectDossun.hh.
|
protected |
Definition at line 70 of file ObjectDossun.hh.
|
protected |
Vector3f in the base game, but only the y-component is used.
Definition at line 65 of file ObjectDossun.hh.
|
staticconstexprprivate |
Definition at line 98 of file ObjectDossun.hh.
|
staticconstexprprivate |
Definition at line 95 of file ObjectDossun.hh.
|
staticconstexprprivate |
Definition at line 97 of file ObjectDossun.hh.
|
staticconstexprprivate |
Definition at line 96 of file ObjectDossun.hh.