#include <ObjectPress.hh>
Represents the Toad's Factory stompers.
This is also a base class for item boxes that get squished by stompers.
Definition at line 9 of file ObjectPress.hh.
Public Member Functions | |
| ObjectPress (const System::MapdataGeoObj ¶ms) | |
| void | init () override |
| void | calc () override |
| LoadFlags | loadFlags () const override |
| Returns a bitmask indicating which lifecycle hooks should be called for the object. | |
| void | loadAnims () override |
| void | createCollision () override |
| f32 | getCollisionRadius () const override |
| Finds the radius that fits fully in a BoxColUnit. | |
| Kart::Reaction | onCollision (Kart::KartObject *kartObj, Kart::Reaction reactionOnKart, Kart::Reaction reactionOnObj, EGG::Vector3f &hitDepth) override |
| virtual void | calcRaised () |
| 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 |
| void | calcCollisionTransform () override |
| 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 | calcModel () |
| virtual const char * | getResources () const |
| virtual void | loadGraphics () |
| 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 () |
Protected Types | |
| enum class | State { Raised , WindUp , Lowering , Lowered , Raising } |
Protected Attributes | |
| State | m_state |
| u32 | m_windUpTimer |
| Number of frames remaining in windup state. | |
| 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 |
Private Member Functions | |
| void | calcWindUp () |
| void | calcLowering () |
| void | checkCollisionLowering () |
| void | calcLowered () |
| void | calcRaising () |
Private Attributes | |
| bool | m_startingRise |
| Used to delay state change by 1 frame. | |
| u32 | m_raisedTimer |
| Number of frames remaining in raised state. | |
| u32 | m_anmDuration |
| f32 | m_loweringVelocity |
| f32 | m_raisedHeight |
| f32 | m_loweredHeight |
| bool | m_startedLowered |
| Used to induce crush effect even if it hit floor this frame. | |
Static Private Attributes | |
| static constexpr f32 | ANM_RATE = 2.0f |
Additional Inherited Members | |
| Public Types inherited from Kinoko::Field::ObjectBase | |
| enum class | eFlags { Position = 0 , Rotation = 1 , Matrix = 2 , Scale = 3 } |
| enum class | eLoadFlags { Calc = 0 , Draw = 1 , AlwaysRecalc = 2 } |
| Describes whether the object needs to be updated every frame. More... | |
| typedef EGG::TBitFlag< u16, eFlags > | Flags |
| typedef EGG::TBitFlag< u8, eLoadFlags > | LoadFlags |
| A bitfield of eLoadFlags that represents the update requirements of the object. | |
| Protected Member Functions inherited from Kinoko::Field::ObjectCollidable | |
| 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::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 |
| Enumerator | |
|---|---|
| WindUp | Rising up a bit before stomping down. |
| Lowering | Stomping down. |
| Lowered | Contacting the floor. |
Definition at line 35 of file ObjectPress.hh.
|
0x80777564 |
Definition at line 11 of file ObjectPress.cc.
|
overridedefault0x807775FC |
|
overridevirtual0x8077788C |
Reimplemented from Kinoko::Field::ObjectBase.
Definition at line 52 of file ObjectPress.cc.
|
private |
Definition at line 160 of file ObjectPress.cc.
|
private0x80777B90 |
Definition at line 152 of file ObjectPress.cc.
|
virtual0x80777A90 |
Definition at line 132 of file ObjectPress.cc.
|
private |
Definition at line 177 of file ObjectPress.cc.
|
private |
Definition at line 141 of file ObjectPress.cc.
|
private0x80777D10 |
Definition at line 193 of file ObjectPress.cc.
|
overridevirtual0x8077840C |
Reimplemented from Kinoko::Field::ObjectCollidable.
Definition at line 88 of file ObjectPress.cc.
|
inlinenodiscardoverridevirtual |
Finds the radius that fits fully in a BoxColUnit.
We refer to the collision parameters as a box due to its use of axes. This does not imply that all collidable objects are boxes!
Reimplemented from Kinoko::Field::ObjectCollidable.
Definition at line 25 of file ObjectPress.hh.
|
overridevirtual0x8077763C |
Reimplemented from Kinoko::Field::ObjectBase.
Definition at line 18 of file ObjectPress.cc.
|
overridevirtual0x807786E4 |
Reimplemented from Kinoko::Field::ObjectBase.
Definition at line 75 of file ObjectPress.cc.
|
inlinenodiscardoverridevirtual0x807787E8 |
Returns a bitmask indicating which lifecycle hooks should be called for the object.
In Kinoko, the only effective behavior of this bitmask is to determine whether calc() should be called. The other bits are unused.
Reimplemented from Kinoko::Field::ObjectBase.
Reimplemented in Kinoko::Field::ObjectPressSenko.
Definition at line 18 of file ObjectPress.hh.
|
overridevirtual0x807782D4 |
Reimplemented from Kinoko::Field::ObjectCollidable.
Definition at line 113 of file ObjectPress.cc.
|
staticconstexprprivate |
Definition at line 61 of file ObjectPress.hh.
|
private |
Definition at line 55 of file ObjectPress.hh.
|
private |
Definition at line 58 of file ObjectPress.hh.
|
private |
Definition at line 56 of file ObjectPress.hh.
|
private |
Definition at line 57 of file ObjectPress.hh.
|
private |
Number of frames remaining in raised state.
Definition at line 54 of file ObjectPress.hh.
|
private |
Used to induce crush effect even if it hit floor this frame.
Definition at line 59 of file ObjectPress.hh.
|
private |
Used to delay state change by 1 frame.
Definition at line 53 of file ObjectPress.hh.
|
protected |
Definition at line 43 of file ObjectPress.hh.
|
protected |
Number of frames remaining in windup state.
Definition at line 44 of file ObjectPress.hh.