#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 12 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 Kinoko::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 Kinoko::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 |
| void | setPos (const EGG::Vector3f &pos) |
| void | addPos (const EGG::Vector3f &v) |
| void | subPos (const EGG::Vector3f &v) |
| void | setScale (const EGG::Vector3f &scale) |
| void | setScale (f32 scale) |
| void | setRot (const EGG::Vector3f &rot) |
| void | setRotNoFlag (const EGG::Vector3f &rot) |
| void | addRot (const EGG::Vector3f &v) |
| void | subRot (const EGG::Vector3f &v) |
| void | setTransform (const EGG::Matrix34f &mat) |
| const EGG::Vector3f & | pos () const |
| const EGG::Vector3f & | scale () const |
| const EGG::Vector3f & | rot () const |
| const EGG::Matrix34f & | transform () 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 Kinoko::Field::ObjectCollidable | |
| ObjectCollisionBase * | m_collision |
| Protected Attributes inherited from Kinoko::Field::ObjectBase | |
| Render::DrawMdl * | m_drawMdl |
| Abstract::g3d::ResFile * | m_resFile |
| ObjectId | m_id |
| RailInterpolator * | m_railInterpolator |
| BoxColUnit * | m_boxColUnit |
| 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 () |
Private Attributes | |
| friend | ObjectDossunTsuibiHolder |
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 Kinoko::Field::ObjectBase | |
| enum class | eFlags { Position = 0 , Rotation = 1 , Matrix = 2 , Scale = 3 } |
| typedef EGG::TBitFlag< u16, eFlags > | Flags |
| Protected Member Functions inherited from Kinoko::Field::ObjectCollidable | |
| void | createCollision () override |
| virtual const EGG::Vector3f & | collisionCenter () const |
| void | registerManagedObject () |
| Protected Member Functions inherited from Kinoko::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 Kinoko::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 48 of file ObjectDossun.hh.
|
strongprotected |
Definition at line 56 of file ObjectDossun.hh.
|
0x80764510 |
Definition at line 11 of file ObjectDossun.cc.
|
overridedefault0x8075EE68 |
|
private0x8075F3F4 |
Definition at line 148 of file ObjectDossun.cc.
|
overridevirtual0x807648A4 |
Reimplemented from Kinoko::Field::ObjectCollidable.
Definition at line 79 of file ObjectDossun.cc.
|
inlineprivate0x8075F430 |
Definition at line 81 of file ObjectDossun.hh.
|
inlineprivate0x8075F460 |
Definition at line 88 of file ObjectDossun.hh.
|
inlineprivate0x8075F4D8 |
Definition at line 95 of file ObjectDossun.hh.
|
0x8075F254 |
Definition at line 124 of file ObjectDossun.cc.
|
private0x8075F76C |
Definition at line 159 of file ObjectDossun.cc.
|
overridevirtual0x8075EEA8 |
Reimplemented from Kinoko::Field::ObjectBase.
Definition at line 18 of file ObjectDossun.cc.
|
0x8075F21C |
Definition at line 112 of file ObjectDossun.cc.
|
inlinenodiscardoverridevirtual |
Reimplemented from Kinoko::Field::ObjectBase.
Definition at line 21 of file ObjectDossun.hh.
|
overridevirtual0x8075FF98 |
Reimplemented from Kinoko::Field::ObjectCollidable.
Definition at line 95 of file ObjectDossun.cc.
|
inline0x8075FE8C |
Definition at line 41 of file ObjectDossun.hh.
|
inlinevirtual0x8075FB50 |
Definition at line 33 of file ObjectDossun.hh.
|
staticconstexprprotected |
The total number of frames the thwomp rises before crashing down.
Definition at line 75 of file ObjectDossun.hh.
|
staticconstexprprivate |
Definition at line 102 of file ObjectDossun.hh.
|
protected |
Definition at line 62 of file ObjectDossun.hh.
|
protected |
Number of frames until the Thwomp will stomp down.
Definition at line 63 of file ObjectDossun.hh.
|
protected |
Definition at line 71 of file ObjectDossun.hh.
|
protected |
Definition at line 70 of file ObjectDossun.hh.
|
protected |
Framecount of an entire animation loop.
Definition at line 69 of file ObjectDossun.hh.
|
protected |
Number of frames the Thwomp remains on the ground.
Definition at line 65 of file ObjectDossun.hh.
|
protected |
Definition at line 68 of file ObjectDossun.hh.
|
protected |
Causes the Thwomp's position to shake at the end of the "still" state.
Definition at line 66 of file ObjectDossun.hh.
|
protected |
Number of frames the Thwomp will remain stationary (or shakes).
Definition at line 64 of file ObjectDossun.hh.
|
protected |
Definition at line 61 of file ObjectDossun.hh.
|
protected |
Definition at line 72 of file ObjectDossun.hh.
|
protected |
Vector3f in the base game, but only the y-component is used.
Definition at line 67 of file ObjectDossun.hh.
|
private |
Definition at line 13 of file ObjectDossun.hh.
|
staticconstexprprivate |
Definition at line 106 of file ObjectDossun.hh.
|
staticconstexprprivate |
Definition at line 103 of file ObjectDossun.hh.
|
staticconstexprprivate |
Definition at line 105 of file ObjectDossun.hh.
|
staticconstexprprivate |
Definition at line 104 of file ObjectDossun.hh.