1#pragma once
2
3#include <math/seadMatrix.h>
4#include <math/seadVector.h>
5
6#include "Library/HostIO/HioNode.h"
7
8namespace al {
9class ActorResource;
10class AnimPlayerMat;
11class AnimPlayerSimple;
12class AnimPlayerSkl;
13class AnimPlayerVis;
14class ModelCtrl;
15class DitherAnimator;
16class ModelLodCtrl;
17class GpuMemAllocator;
18class ModelShaderHolder;
19class ModelOcclusionCullingDirector;
20class ShadowDirector;
21class PrepassTriangleCulling;
22
23class ModelKeeper : public HioNode {
24public:
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
66private:
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