diff --git a/include/Shiraiwa/Coord3D.h b/include/Shiraiwa/Coord3D.h index 0205eead..6a4b128f 100644 --- a/include/Shiraiwa/Coord3D.h +++ b/include/Shiraiwa/Coord3D.h @@ -60,13 +60,14 @@ class TPathMove { void checkReachTarget(); // Inline/Unused + u16 get_8() const { return _8; } void setTargetNode(f32, f32); void setTargetNode(u16); void getNodeDir(u16, JGeometry::TVec3f *); protected: const CrsData::SObject *mpObj; // 04 - s16 _8; // + u16 _8; // JGeometry::TVec3f *mpPos; // 0c JGeometry::TVec3f *mpVel; // 10 f32 _14; diff --git a/include/Shiraiwa/Objects/MapObjWall.h b/include/Shiraiwa/Objects/MapObjWall.h new file mode 100644 index 00000000..17ad314b --- /dev/null +++ b/include/Shiraiwa/Objects/MapObjWall.h @@ -0,0 +1,43 @@ +#ifndef MAPOBJWALL_H +#define MAPOBJWALL_H + +#include +#include + +#include "Kaneshige/Course/CrsData.h" +#include "Sato/StateObserver.h" +#include "Shiraiwa/Coord3D.h" +#include "Shiraiwa/Objects/MapObjHioNode.h" + +#include "types.h" + +class TMapObjWall : public TMapObjHioNode, public StateObserver +{ +public: + // Global + TMapObjWall(const CrsData::SObject &); // 0x802a5284 + virtual ~TMapObjWall(); // 0x802a534c + virtual void reset(); // 0x802a53f4 + virtual const char *getBmdFileName(); // 0x802a5508 + virtual void loadAnimation(); // 0x802a5530 + virtual void createModel(JKRSolidHeap *, u32); // 0x802a5598 + virtual void calc(); // 0x802a56dc + virtual void InitExec(); // 0x802a5758 + virtual void MoveExec(); // 0x802a57c4 + void initFunc_Move(); // 0x802a5830 + void doFunc_Move(); // 0x802a58bc + void initFunc_Rest(); // 0x802a5908 + void doFunc_Rest(); // 0x802a590c + virtual void createColModel(J3DModelData *); // 0x802a5964 + + static StateFuncSet sTable[2]; // 0x803a5978 + static bool sUseBca; // 0x80415238 + static J3DAnmTransform *sWlWallBckAnmTrans; // 0x80416ec8 + static J3DMtxCalc *sWlWallBckMtxCalc; // 0x80416ecc + +private: + TPathMove *mPathMove; // 158 + u16 mRestFrame; // 15C +}; // Size: 0x160 + +#endif // MAPOBJWALL_H diff --git a/src/Shiraiwa/MapObjWall.cpp b/src/Shiraiwa/MapObjWall.cpp index e69de29b..7df41ec7 100644 --- a/src/Shiraiwa/MapObjWall.cpp +++ b/src/Shiraiwa/MapObjWall.cpp @@ -0,0 +1,53 @@ +#include "Shiraiwa/Objects/MapObjWall.h" + +J3DAnmTransform *TMapObjWall::sWlWallBckAnmTrans; +J3DMtxCalc *TMapObjWall::sWlWallBckMtxCalc; + +bool TMapObjWall::sUseBca = true; + +StateObserver::StateFuncSet TMapObjWall::sTable[2] = { + {0, &TMapObjWall::initFunc_Move, &TMapObjWall::doFunc_Move}, + {1, &TMapObjWall::initFunc_Rest, &TMapObjWall::doFunc_Rest}, +}; + +TMapObjWall::TMapObjWall(const CrsData::SObject &obj) : TMapObjHioNode(obj) { + NewAnmCtrl(); + createSoundMgr(); + mPathMove = new TPathMove(&obj); + reset(); +} + +TMapObjWall::~TMapObjWall() {} + +void TMapObjWall::reset() {} + +const char *TMapObjWall::getBmdFileName() { + static const char *cBmdName = "/Objects/wl_wall1.bmd"; + return cBmdName; +} + +void TMapObjWall::loadAnimation() {} + +void TMapObjWall::createModel(JKRSolidHeap *, u32) {} + +void TMapObjWall::calc() {} + +void TMapObjWall::InitExec() {} + +void TMapObjWall::MoveExec() {} + +void TMapObjWall::initFunc_Move() {} + +void TMapObjWall::doFunc_Move() {} + +void TMapObjWall::initFunc_Rest() {} + +void TMapObjWall::doFunc_Rest() { + if (IsPathMove()) { + if (mPathMove->get_8() == 0 || getStateCount() > mRestFrame) { + setState(0); + } + } +} + +void TMapObjWall::createColModel(J3DModelData *) {}