| 1 | #pragma once |
|---|---|
| 2 | |
| 3 | #include <math/seadMatrix.h> |
| 4 | #include <math/seadVector.h> |
| 5 | |
| 6 | #include "Library/HostIO/HioNode.h" |
| 7 | |
| 8 | namespace al { |
| 9 | class ActorResource; |
| 10 | class AnimPlayerMat; |
| 11 | class AnimPlayerSimple; |
| 12 | class AnimPlayerSkl; |
| 13 | class AnimPlayerVis; |
| 14 | class ModelCtrl; |
| 15 | class DitherAnimator; |
| 16 | class ModelLodCtrl; |
| 17 | class GpuMemAllocator; |
| 18 | class ModelShaderHolder; |
| 19 | class ModelOcclusionCullingDirector; |
| 20 | class ShadowDirector; |
| 21 | class PrepassTriangleCulling; |
| 22 | |
| 23 | class ModelKeeper : public HioNode { |
| 24 | public: |
| 25 | ModelKeeper(); |
| 26 | |
| 27 | virtual ~ModelKeeper(); |
| 28 | |
| 29 | void initResource(); |
| 30 | void createMatAnimForProgram(s32); |
| 31 | void setDisplayRootJointMtxPtr(const sead::Matrix34f* mtx); |
| 32 | void setModelLodCtrl(ModelLodCtrl* modelLodCtrl); |
| 33 | void setDitherAnimator(DitherAnimator* ditherAnimator); |
| 34 | void initModel(s32, GpuMemAllocator*, ModelShaderHolder*, ModelOcclusionCullingDirector*, |
| 35 | ShadowDirector*, PrepassTriangleCulling*); |
| 36 | void show(); |
| 37 | void hide(); |
| 38 | void update(); |
| 39 | void updateLast(); |
| 40 | void calc(const sead::Matrix34f&, const sead::Vector3f&); |
| 41 | const sead::Matrix34f* getBaseMtx() const; |
| 42 | sead::Matrix34f* getWorldMtxPtrByIndex(s32 index) const; |
| 43 | |
| 44 | ModelCtrl* getModelCtrl() const { return mModelCtrl; } |
| 45 | |
| 46 | AnimPlayerSkl* getAnimSkl() const { return mAnimSkl; } |
| 47 | |
| 48 | AnimPlayerMat* getAnimMtp() const { return mAnimMtp; } |
| 49 | |
| 50 | AnimPlayerMat* getAnimMts() const { return mAnimMts; } |
| 51 | |
| 52 | AnimPlayerMat* getAnimMcl() const { return mAnimMcl; } |
| 53 | |
| 54 | AnimPlayerMat* getAnimMat() const { return mAnimMat; } |
| 55 | |
| 56 | AnimPlayerVis* getAnimVis() const { return mAnimVis; } |
| 57 | |
| 58 | AnimPlayerVis* getAnimVisForAction() const { return mAnimVisForAction; } |
| 59 | |
| 60 | bool isFixedModel() const { return mIsFixedModel; } |
| 61 | |
| 62 | bool isIgnoreUpdateDrawClipping() const { return mIsIgnoreUpdateDrawClipping; } |
| 63 | |
| 64 | bool isNeedSetBaseMtxAndCalcAnim() const { return mIsNeedSetBaseMtxAndCalcAnim; } |
| 65 | |
| 66 | private: |
| 67 | const char* mName; |
| 68 | ModelCtrl* mModelCtrl; |
| 69 | ActorResource* mActorRes; |
| 70 | AnimPlayerSkl* mAnimSkl; |
| 71 | AnimPlayerMat* mAnimMtp; |
| 72 | AnimPlayerMat* mAnimMts; |
| 73 | AnimPlayerMat* mAnimMcl; |
| 74 | AnimPlayerMat* mAnimMat; |
| 75 | AnimPlayerVis* mAnimVisForAction; |
| 76 | AnimPlayerVis* mAnimVis; |
| 77 | char gap_58[9]; |
| 78 | bool mIsFixedModel; |
| 79 | bool mIsIgnoreUpdateDrawClipping; |
| 80 | bool mIsNeedSetBaseMtxAndCalcAnim; |
| 81 | }; |
| 82 | |
| 83 | } // namespace al |
| 84 |