#include <ObjectTwistedWay.hh>
The wavy road in Bowser's Castle.
Behaves as a sine wave with a period of 120 frames and an amplitude which varies depending on your distance from the center.
Definition at line 10 of file ObjectTwistedWay.hh.
Public Member Functions | |
| ObjectTwistedWay (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 | createCollision () override |
| void | calcCollisionTransform () override |
| f32 | getCollisionRadius () const override |
| bool | checkPointPartial (const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfoPartial *pInfo, KCLTypeMask *pFlagsOut) override |
| bool | checkPointPartialPush (const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfoPartial *pInfo, KCLTypeMask *pFlagsOut) override |
| bool | checkPointFull (const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfo *pInfo, KCLTypeMask *pFlagsOut) override |
| bool | checkPointFullPush (const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfo *pInfo, KCLTypeMask *pFlagsOut) override |
| bool | checkSpherePartial (f32 radius, const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfoPartial *pInfo, KCLTypeMask *pFlagsOut, u32 timeOffset) override |
| bool | checkSpherePartialPush (f32 radius, const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfoPartial *pInfo, KCLTypeMask *pFlagsOut, u32 timeOffset) override |
| bool | checkSphereFull (f32 radius, const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfo *pInfo, KCLTypeMask *pFlagsOut, u32 timeOffset) override |
| bool | checkSphereFullPush (f32 radius, const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfo *pInfo, KCLTypeMask *pFlagsOut, u32 timeOffset) override |
| bool | checkPointCachedPartial (const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfoPartial *pInfo, KCLTypeMask *pFlagsOut) override |
| bool | checkPointCachedPartialPush (const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfoPartial *pInfo, KCLTypeMask *pFlagsOut) override |
| bool | checkPointCachedFull (const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfo *pInfo, KCLTypeMask *pFlagsOut) override |
| bool | checkPointCachedFullPush (const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfo *pInfo, KCLTypeMask *pFlagsOut) override |
| bool | checkSphereCachedPartial (f32 radius, const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfoPartial *pInfo, KCLTypeMask *pFlagsOut, u32 timeOffset) override |
| bool | checkSphereCachedPartialPush (f32 radius, const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfoPartial *pInfo, KCLTypeMask *pFlagsOut, u32 timeOffset) override |
| bool | checkSphereCachedFull (f32 radius, const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfo *pInfo, KCLTypeMask *pFlagsOut, u32 timeOffset) override |
| bool | checkSphereCachedFullPush (f32 radius, const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfo *pInfo, KCLTypeMask *pFlagsOut, u32 timeOffset) override |
| Public Member Functions inherited from Kinoko::Field::ObjectDrivable | |
| ObjectDrivable (const System::MapdataGeoObj ¶ms) | |
| void | load () override |
| virtual void | initCollision () |
| virtual void | loadAABB (f32 radius) |
| virtual void | narrScLocal (f32, const EGG::Vector3f &, KCLTypeMask, u32) |
| 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 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 () |
Private Member Functions | |
| bool | checkSpherePartialImpl (f32 radius, const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfoPartial *pInfo, KCLTypeMask *pFlagsOut, u32 timeOffset) |
| bool | checkSpherePartialPushImpl (f32 radius, const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfoPartial *pInfo, KCLTypeMask *pFlagsOut, u32 timeOffset) |
| bool | checkSphereFullImpl (f32 radius, const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfo *pInfo, KCLTypeMask *pFlagsOut, u32 timeOffset) |
| bool | checkSphereFullPushImpl (f32 radius, const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfo *pInfo, KCLTypeMask *pFlagsOut, u32 timeOffset) |
| template<typename T> requires std::is_same_v<T, CollisionInfo> || std::is_same_v<T, CollisionInfoPartial> | |
| bool | checkSphereImpl (f32 radius, const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, T *pInfo, KCLTypeMask *pFlagsOut, u32 timeOffset, bool push) |
| Helper function which contains frequently re-used code. Behavior branches depending on whether it is a full or partial check (call CollisionInfo::updateFloor) or push (push entry in the CollisionDirector). | |
| template<typename T> requires std::is_same_v<T, CollisionInfo> || std::is_same_v<T, CollisionInfoPartial> | |
| bool | checkWallCollision (f32 angle, f32 radius, u32 t, const EGG::Vector3f &relPos, T *pInfo, KCLTypeMask *pFlagsOut, bool push) |
| template<typename T> requires std::is_same_v<T, CollisionInfo> || std::is_same_v<T, CollisionInfoPartial> | |
| bool | checkFloorCollision (f32 angle, f32 radius, const EGG::Vector3f &relPos, T *pInfo, KCLTypeMask *pFlagsOut, bool push) |
| bool | checkPoleCollision (f32 radius, f32 angle, const EGG::Vector3f &relPos, EGG::Vector3f &v0, EGG::Vector3f &fnrm, f32 &dist) |
| f32 | calcWave (f32 zPercent, u32 t) |
Private Attributes | |
| u32 | m_introTimer |
Static Private Attributes | |
| static constexpr s32 | PERIOD_LENGTH = 120 |
| Framecount of full oscillation. | |
| static constexpr f32 | WIDTH = 2000.0f |
| static constexpr f32 | HALF_DEPTH = 7500.0f |
| Half the length of the wavy road. | |
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::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) |
| 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 |
|
0x80813BD4 |
Definition at line 12 of file ObjectTwistedWay.cc.
|
overridedefault0x80814918 |
|
overridevirtual0x80813CFC |
Reimplemented from Kinoko::Field::ObjectBase.
Definition at line 18 of file ObjectTwistedWay.cc.
|
inlineoverridevirtual0x80814908 |
Implements Kinoko::Field::ObjectBase.
Definition at line 31 of file ObjectTwistedWay.hh.
|
nodiscardprivate |
Definition at line 326 of file ObjectTwistedWay.cc.
|
nodiscardprivate |
Definition at line 263 of file ObjectTwistedWay.cc.
|
nodiscardoverridevirtual0x80814888 |
Implements Kinoko::Field::ObjectDrivable.
Definition at line 88 of file ObjectTwistedWay.cc.
|
nodiscardoverridevirtual0x80814898 |
Implements Kinoko::Field::ObjectDrivable.
Definition at line 94 of file ObjectTwistedWay.cc.
|
nodiscardoverridevirtual0x80814868 |
Implements Kinoko::Field::ObjectDrivable.
Definition at line 76 of file ObjectTwistedWay.cc.
|
nodiscardoverridevirtual0x80814878 |
Implements Kinoko::Field::ObjectDrivable.
Definition at line 82 of file ObjectTwistedWay.cc.
|
nodiscardoverridevirtual0x808148D8 |
Implements Kinoko::Field::ObjectDrivable.
Definition at line 37 of file ObjectTwistedWay.cc.
|
nodiscardoverridevirtual0x808148E8 |
Implements Kinoko::Field::ObjectDrivable.
Definition at line 43 of file ObjectTwistedWay.cc.
|
nodiscardoverridevirtual0x808148B8 |
Implements Kinoko::Field::ObjectDrivable.
Definition at line 25 of file ObjectTwistedWay.cc.
|
nodiscardoverridevirtual0x808148C8 |
Implements Kinoko::Field::ObjectDrivable.
Definition at line 31 of file ObjectTwistedWay.cc.
|
nodiscardprivate0x80814270 |
Definition at line 304 of file ObjectTwistedWay.cc.
|
nodiscardoverridevirtual0x80814860 |
Implements Kinoko::Field::ObjectDrivable.
Definition at line 114 of file ObjectTwistedWay.cc.
|
nodiscardoverridevirtual0x80814864 |
Implements Kinoko::Field::ObjectDrivable.
Definition at line 121 of file ObjectTwistedWay.cc.
|
nodiscardoverridevirtual0x80814858 |
Implements Kinoko::Field::ObjectDrivable.
Definition at line 100 of file ObjectTwistedWay.cc.
|
nodiscardoverridevirtual0x8081485C |
Implements Kinoko::Field::ObjectDrivable.
Definition at line 107 of file ObjectTwistedWay.cc.
|
nodiscardoverridevirtual0x808148B0 |
Implements Kinoko::Field::ObjectDrivable.
Definition at line 63 of file ObjectTwistedWay.cc.
|
nodiscardprivate0x80815444 |
Definition at line 142 of file ObjectTwistedWay.cc.
|
nodiscardoverridevirtual0x808148B4 |
Implements Kinoko::Field::ObjectDrivable.
Definition at line 69 of file ObjectTwistedWay.cc.
|
nodiscardprivate0x80815D64 |
Definition at line 149 of file ObjectTwistedWay.cc.
|
nodiscardprivate |
Helper function which contains frequently re-used code. Behavior branches depending on whether it is a full or partial check (call CollisionInfo::updateFloor) or push (push entry in the CollisionDirector).
Definition at line 160 of file ObjectTwistedWay.cc.
|
nodiscardoverridevirtual0x808148A8 |
Implements Kinoko::Field::ObjectDrivable.
Definition at line 49 of file ObjectTwistedWay.cc.
|
nodiscardprivate0x80814958 |
Definition at line 128 of file ObjectTwistedWay.cc.
|
nodiscardoverridevirtual0x808148AC |
Implements Kinoko::Field::ObjectDrivable.
Definition at line 56 of file ObjectTwistedWay.cc.
|
nodiscardprivate0x80814EA8 |
Definition at line 135 of file ObjectTwistedWay.cc.
|
nodiscardprivate |
Definition at line 191 of file ObjectTwistedWay.cc.
|
inlineoverridevirtual0x8081490C |
Implements Kinoko::Field::ObjectBase.
Definition at line 28 of file ObjectTwistedWay.hh.
|
inlinenodiscardoverridevirtual0x808148F8 |
Reimplemented from Kinoko::Field::ObjectDrivable.
Definition at line 34 of file ObjectTwistedWay.hh.
|
inlineoverridevirtual0x80813C40 |
Reimplemented from Kinoko::Field::ObjectBase.
Definition at line 16 of file ObjectTwistedWay.hh.
|
inlinenodiscardoverridevirtual0x80814910 |
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 23 of file ObjectTwistedWay.hh.
|
staticconstexprprivate |
Half the length of the wavy road.
Definition at line 117 of file ObjectTwistedWay.hh.
|
private |
Definition at line 113 of file ObjectTwistedWay.hh.
|
staticconstexprprivate |
Framecount of full oscillation.
Definition at line 115 of file ObjectTwistedWay.hh.
|
staticconstexprprivate |
Definition at line 116 of file ObjectTwistedWay.hh.