#include <ObjectCow.hh>
A cow that follows a leader by sharing the same rail.
Definition at line 96 of file ObjectCow.hh.
Public Member Functions | |
| ObjectCowFollower (const System::MapdataGeoObj ¶ms, const EGG::Vector3f &pos, f32 initRot) | |
| void | init () override |
| void | calc () override |
| LoadFlags | loadFlags () const override |
| Returns a bitmask indicating which lifecycle hooks should be called for the object. | |
| void | loadRail () override |
| Public Member Functions inherited from Kinoko::Field::ObjectCow | |
| ObjectCow (const System::MapdataGeoObj ¶ms) | |
| Kart::Reaction | onCollision (Kart::KartObject *kartObj, Kart::Reaction reactionOnKart, Kart::Reaction reactionOnObj, EGG::Vector3f &hitDepth) override |
| 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 |
| 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 | calcModel () |
| virtual const char * | getResources () const |
| virtual void | loadGraphics () |
| virtual void | loadAnims () |
| 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 () |
Private Member Functions | |
| void | enterWait () |
| void | enterFreeRoam () |
| void | enterFollowLeader () |
| void | calcWait () |
| void | calcFreeRoam () |
| void | calcFollowLeader () |
Private Attributes | |
| const EGG::Vector3f | m_posOffset |
| RailInterpolator * | m_rail |
| u16 | m_waitFrames |
| Number of frames the cow will stand still for. | |
| f32 | m_topSpeed |
| The speed the cow will accelerate up to. | |
| bool | m_bStopping |
| Set when the cow is coming to a stop. | |
| f32 | m_railSegThreshold |
| The rail segmentT at which a cow will change to state 2. | |
Static Private Attributes | |
| static constexpr f32 | BASE_TOP_SPEED = 2.0f |
| static constexpr f32 | TOP_SPEED_VARIANCE = 4.0f - 2.0f |
| static constexpr f32 | DIST_THRESHOLD = 200.0f |
| Distance at which a cow is considered close enough to the rail to stop moving. | |
| static constexpr std::array< StateManagerEntry, 3 > | STATE_ENTRIES |
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::ObjectCow | |
| virtual void | calcFloor () |
| void | setup () |
| void | calcPos () |
| f32 | setTarget (const EGG::Vector3f &v) |
| 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) |
| Protected Member Functions inherited from Kinoko::Field::StateManager | |
| StateManager (void *obj, const std::span< const StateManagerEntry > &entries) | |
| void | calc () |
| Static Protected Member Functions inherited from Kinoko::Field::ObjectCow | |
| static EGG::Vector3f | Interpolate (f32 t, const EGG::Vector3f &v0, const EGG::Vector3f &v1) |
| 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) |
| Protected Attributes inherited from Kinoko::Field::ObjectCow | |
| u32 | m_startFrame |
| The frame the cow will start moving. | |
| EGG::Vector3f | m_tangent |
| EGG::Vector3f | m_prevTangent |
| EGG::Vector3f | m_up |
| EGG::Vector3f | m_velocity |
| f32 | m_xzSpeed |
| XZ plane length of m_velocity. | |
| f32 | m_tangentFactor |
| EGG::Vector3f | m_floorNrm |
| EGG::Vector3f | m_state1TargetPos |
| Calculated in enterState1. | |
| EGG::Vector3f | m_targetDir |
| EGG::Vector3f | m_upForce |
| Used by calcPos to counteract gravity. | |
| f32 | m_interpRate |
| 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 |
| Protected Attributes inherited from Kinoko::Field::StateManager | |
| u16 | m_currentStateId |
| s32 | m_nextStateId |
| u32 | m_currentFrame |
| std::span< u16 > | m_entryIds |
| std::span< const StateManagerEntry > | m_entries |
| void * | m_obj |
| Static Protected Attributes inherited from Kinoko::Field::ObjectCow | |
| static constexpr EGG::Vector3f | GRAVITY_FORCE = EGG::Vector3f(0.0f, 2.0f, 0.0f) |
|
0x806BDD48 |
Definition at line 249 of file ObjectCow.cc.
|
overridedefault0x806BDFF4 |
|
overridevirtual0x806BE1A8 |
Reimplemented from Kinoko::Field::ObjectBase.
Definition at line 276 of file ObjectCow.cc.
|
private0x806BE9CC |
Definition at line 400 of file ObjectCow.cc.
|
private0x806BE794 |
Definition at line 376 of file ObjectCow.cc.
|
private0x806BE580 |
Definition at line 365 of file ObjectCow.cc.
|
private0x806BE930 |
Definition at line 356 of file ObjectCow.cc.
|
private0x806BE62C |
Definition at line 329 of file ObjectCow.cc.
|
private0x806BE4E8 |
Definition at line 317 of file ObjectCow.cc.
|
overridevirtual0x806BE060 |
Reimplemented from Kinoko::Field::ObjectBase.
Definition at line 260 of file ObjectCow.cc.
|
inlinenodiscardoverridevirtual0x806BF424 |
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.
Definition at line 107 of file ObjectCow.hh.
|
inlineoverridevirtual0x806BF420 |
Reimplemented from Kinoko::Field::ObjectBase.
Definition at line 112 of file ObjectCow.hh.
|
staticconstexprprivate |
Definition at line 130 of file ObjectCow.hh.
|
staticconstexprprivate |
Distance at which a cow is considered close enough to the rail to stop moving.
Definition at line 134 of file ObjectCow.hh.
|
private |
Set when the cow is coming to a stop.
Definition at line 127 of file ObjectCow.hh.
|
private |
Definition at line 123 of file ObjectCow.hh.
|
private |
Definition at line 124 of file ObjectCow.hh.
|
private |
The rail segmentT at which a cow will change to state 2.
Definition at line 128 of file ObjectCow.hh.
|
private |
The speed the cow will accelerate up to.
Definition at line 126 of file ObjectCow.hh.
|
private |
Number of frames the cow will stand still for.
Definition at line 125 of file ObjectCow.hh.
|
staticconstexprprivate |
Definition at line 136 of file ObjectCow.hh.
|
staticconstexprprivate |
Definition at line 131 of file ObjectCow.hh.