#include <ObjectVolcanoPiece.hh>
Represents an object that eventually shakes and then falls, e.g. the ultra rock on GV.
Definition at line 8 of file ObjectVolcanoPiece.hh.
Public Types | |
| typedef bool(ObjColMgr::* | CheckPointPartialFunc) (const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfoPartial *pInfo, KCLTypeMask *pFlagsOut) |
| typedef bool(ObjColMgr::* | CheckPointFullFunc) (const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfo *pInfo, KCLTypeMask *pFlagsOut) |
| typedef bool(ObjColMgr::* | CheckSpherePartialFunc) (f32 radius, const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfoPartial *pInfo, KCLTypeMask *pFlagsOut) |
| typedef bool(ObjColMgr::* | CheckSphereFullFunc) (f32 radius, const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfo *pInfo, KCLTypeMask *pFlagsOut) |
| 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. | |
Public Member Functions | |
| ObjectVolcanoPiece (const System::MapdataGeoObj ¶ms) | |
| void | calc () override |
| LoadFlags | loadFlags () const override |
| Returns a bitmask indicating which lifecycle hooks should be called for the object. | |
| const char * | getKclName () const override |
| void | createCollision () override |
| template<typename T, typename U> requires (std::is_same_v<T, CollisionInfo> || std::is_same_v<T, CollisionInfoPartial>) && (std::is_same_v<U, CheckPointPartialFunc> || std::is_same_v<U, CheckPointFullFunc>) | |
| bool | checkPointImpl (const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, T *pInfo, KCLTypeMask *pFlagsOut, U checkFunc) |
| template<typename T, typename U> requires (std::is_same_v<T, CollisionInfo> || std::is_same_v<T, CollisionInfoPartial>) && (std::is_same_v<U, CheckSpherePartialFunc> || std::is_same_v<U, CheckSphereFullFunc>) | |
| bool | checkSphereImpl (f32 radius, const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, T *pInfo, KCLTypeMask *pFlagsOut, u32 timeOffset, U checkFunc) |
| bool | checkCollisionImpl (f32 radius, const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfo *pInfo, KCLTypeMask *pFlagsOut, u32 timeOffset, CheckSphereFullFunc checkFunc) |
| 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 |
| void | narrScLocal (f32 radius, const EGG::Vector3f &pos, KCLTypeMask mask, 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 |
| void | update (u32 timeOffset) override |
| void | calcScale (u32 timeOffset) override |
| void | setMovingObjVel (const EGG::Vector3f &v) override |
| const EGG::Matrix34f & | getUpdatedMatrix (u32 timeOffset) override |
| bool | checkCollision (f32 radius, const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfo *info, KCLTypeMask *maskOut, u32 timeOffset) override |
| bool | checkCollisionCached (f32 radius, const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfo *info, KCLTypeMask *maskOut, u32 timeOffset) override |
| Public Member Functions inherited from Kinoko::Field::ObjectKCL | |
| ObjectKCL (const System::MapdataGeoObj ¶ms) | |
| void | calcCollisionTransform () override |
| const EGG::Vector3f & | getPosition () const override |
| f32 | getCollisionRadius () const override |
| void | initCollision () override |
| virtual f32 | getScaleY (u32) const |
| virtual f32 | colRadiusAdditionalLength () const |
| virtual bool | shouldCheckColNoPush () const |
| virtual bool | shouldCheckColPush () const |
| Public Member Functions inherited from Kinoko::Field::ObjectDrivable | |
| ObjectDrivable (const System::MapdataGeoObj ¶ms) | |
| void | load () override |
| virtual void | loadAABB (f32 radius) |
| 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 | init () |
| virtual void | calcModel () |
| virtual const char * | getResources () const |
| virtual void | loadGraphics () |
| virtual void | loadAnims () |
| virtual void | loadRail () |
| virtual const char * | getName () 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 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 Types | |
| enum class | State { Rest = 0 , Shake = 1 , Quake = 2 , Fall = 3 , Gone = 4 } |
Private Member Functions | |
| const EGG::Matrix34f & | calcShakeAndFall (EGG::Vector3f *vel, u32 timeOffset) |
| State | calcState (u32 frame) const |
| f32 | calcT (u32 frame) const |
Private Attributes | |
| char | m_modelName [16] |
| const EGG::Vector3f | m_initialPos |
| const u32 | m_restDuration |
| const u32 | m_shakeDuration |
| const u32 | m_quakeDuration |
| EGG::Matrix34f | m_rtMat |
| ObjColMgr * | m_colMgrB |
| ObjColMgr * | m_colMgrC |
Static Private Attributes | |
| static constexpr u32 | FALL_DURATION = 900 |
Additional Inherited Members | |
| 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::ObjectKCL | |
| ObjColMgr * | m_objColMgr |
| EGG::Vector3f | m_kclMidpoint |
| f32 | m_bboxHalfSideLength |
| s32 | m_lastMtxUpdateFrame |
| s32 | m_lastScaleUpdateFrame |
| 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 |
| typedef bool(ObjColMgr::* Kinoko::Field::ObjectVolcanoPiece::CheckPointFullFunc) (const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfo *pInfo, KCLTypeMask *pFlagsOut) |
Definition at line 29 of file ObjectVolcanoPiece.hh.
| typedef bool(ObjColMgr::* Kinoko::Field::ObjectVolcanoPiece::CheckPointPartialFunc) (const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfoPartial *pInfo, KCLTypeMask *pFlagsOut) |
Definition at line 25 of file ObjectVolcanoPiece.hh.
| typedef bool(ObjColMgr::* Kinoko::Field::ObjectVolcanoPiece::CheckSphereFullFunc) (f32 radius, const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfo *pInfo, KCLTypeMask *pFlagsOut) |
Definition at line 36 of file ObjectVolcanoPiece.hh.
| typedef bool(ObjColMgr::* Kinoko::Field::ObjectVolcanoPiece::CheckSpherePartialFunc) (f32 radius, const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask flags, CollisionInfoPartial *pInfo, KCLTypeMask *pFlagsOut) |
Definition at line 32 of file ObjectVolcanoPiece.hh.
|
strongprivate |
Definition at line 199 of file ObjectVolcanoPiece.hh.
|
0x80817DE8 |
Definition at line 8 of file ObjectVolcanoPiece.cc.
|
override0x80803DA8 |
Definition at line 21 of file ObjectVolcanoPiece.cc.
|
overridevirtual0x80819400 |
Reimplemented from Kinoko::Field::ObjectBase.
Definition at line 27 of file ObjectVolcanoPiece.cc.
|
overridevirtual0x80818674 |
Reimplemented from Kinoko::Field::ObjectKCL.
Definition at line 189 of file ObjectVolcanoPiece.cc.
|
private0x808187B4 |
Definition at line 214 of file ObjectVolcanoPiece.cc.
|
private0x80818FCC |
Definition at line 277 of file ObjectVolcanoPiece.cc.
|
private0x80819028 |
Definition at line 298 of file ObjectVolcanoPiece.cc.
|
inlinenodiscardoverridevirtual0x808199A8 |
Reimplemented from Kinoko::Field::ObjectKCL.
Definition at line 183 of file ObjectVolcanoPiece.hh.
|
inlinenodiscardoverridevirtual0x80819DA0 |
Reimplemented from Kinoko::Field::ObjectKCL.
Definition at line 191 of file ObjectVolcanoPiece.hh.
|
nodiscard |
Definition at line 122 of file ObjectVolcanoPiece.cc.
|
inlinenodiscardoverridevirtual0x80804CD8 |
Reimplemented from Kinoko::Field::ObjectKCL.
Definition at line 130 of file ObjectVolcanoPiece.hh.
|
inlinenodiscardoverridevirtual0x80804E20 |
Reimplemented from Kinoko::Field::ObjectKCL.
Definition at line 136 of file ObjectVolcanoPiece.hh.
|
inlinenodiscardoverridevirtual0x80804A48 |
Reimplemented from Kinoko::Field::ObjectKCL.
Definition at line 117 of file ObjectVolcanoPiece.hh.
|
inlinenodiscardoverridevirtual0x80804B90 |
Reimplemented from Kinoko::Field::ObjectKCL.
Definition at line 123 of file ObjectVolcanoPiece.hh.
|
inlinenodiscardoverridevirtual0x80805694 |
Reimplemented from Kinoko::Field::ObjectKCL.
Definition at line 71 of file ObjectVolcanoPiece.hh.
|
inlinenodiscardoverridevirtual0x808057DC |
Reimplemented from Kinoko::Field::ObjectKCL.
Definition at line 77 of file ObjectVolcanoPiece.hh.
|
nodiscard |
Definition at line 85 of file ObjectVolcanoPiece.cc.
|
inlinenodiscardoverridevirtual0x80805404 |
Reimplemented from Kinoko::Field::ObjectKCL.
Definition at line 59 of file ObjectVolcanoPiece.hh.
|
inlinenodiscardoverridevirtual0x8080554C |
Reimplemented from Kinoko::Field::ObjectKCL.
Definition at line 65 of file ObjectVolcanoPiece.hh.
|
inlinenodiscardoverridevirtual0x808048B4 |
Reimplemented from Kinoko::Field::ObjectKCL.
Definition at line 159 of file ObjectVolcanoPiece.hh.
|
inlinenodiscardoverridevirtual0x80804A38 |
Reimplemented from Kinoko::Field::ObjectKCL.
Definition at line 167 of file ObjectVolcanoPiece.hh.
|
inlinenodiscardoverridevirtual0x808045AC |
Reimplemented from Kinoko::Field::ObjectKCL.
Definition at line 143 of file ObjectVolcanoPiece.hh.
|
inlinenodiscardoverridevirtual0x80804730 |
Reimplemented from Kinoko::Field::ObjectKCL.
Definition at line 151 of file ObjectVolcanoPiece.hh.
|
inlinenodiscardoverridevirtual0x80805270 |
Reimplemented from Kinoko::Field::ObjectKCL.
Definition at line 99 of file ObjectVolcanoPiece.hh.
|
inlinenodiscardoverridevirtual0x808053F4 |
Reimplemented from Kinoko::Field::ObjectKCL.
Definition at line 107 of file ObjectVolcanoPiece.hh.
|
nodiscard |
Definition at line 104 of file ObjectVolcanoPiece.cc.
|
inlinenodiscardoverridevirtual0x80804F68 |
Reimplemented from Kinoko::Field::ObjectKCL.
Definition at line 83 of file ObjectVolcanoPiece.hh.
|
inlinenodiscardoverridevirtual0x808050EC |
Reimplemented from Kinoko::Field::ObjectKCL.
Definition at line 91 of file ObjectVolcanoPiece.hh.
|
overridevirtual0x80817F6C |
Reimplemented from Kinoko::Field::ObjectKCL.
Definition at line 39 of file ObjectVolcanoPiece.cc.
|
inlinenodiscardoverridevirtual0x80803F6C |
Reimplemented from Kinoko::Field::ObjectBase.
Definition at line 21 of file ObjectVolcanoPiece.hh.
|
inlinenodiscardoverridevirtual0x8080595C |
Reimplemented from Kinoko::Field::ObjectKCL.
Definition at line 178 of file ObjectVolcanoPiece.hh.
|
inlinenodiscardoverridevirtual0x80805974 |
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 16 of file ObjectVolcanoPiece.hh.
|
overridevirtual0x808044C0 |
Reimplemented from Kinoko::Field::ObjectKCL.
Definition at line 147 of file ObjectVolcanoPiece.cc.
|
overridevirtual0x80805924 |
Reimplemented from Kinoko::Field::ObjectKCL.
Definition at line 205 of file ObjectVolcanoPiece.cc.
|
overridevirtual0x80818334 |
Reimplemented from Kinoko::Field::ObjectKCL.
Definition at line 166 of file ObjectVolcanoPiece.cc.
|
staticconstexprprivate |
Definition at line 220 of file ObjectVolcanoPiece.hh.
|
private |
Definition at line 217 of file ObjectVolcanoPiece.hh.
|
private |
Definition at line 218 of file ObjectVolcanoPiece.hh.
|
private |
Definition at line 212 of file ObjectVolcanoPiece.hh.
|
private |
Definition at line 211 of file ObjectVolcanoPiece.hh.
|
private |
Definition at line 215 of file ObjectVolcanoPiece.hh.
|
private |
Definition at line 213 of file ObjectVolcanoPiece.hh.
|
private |
Definition at line 216 of file ObjectVolcanoPiece.hh.
|
private |
Definition at line 214 of file ObjectVolcanoPiece.hh.