1#pragma once
2
3#include <math/seadMatrix.h>
4#include <math/seadVector.h>
5
6#include "Library/LiveActor/LiveActor.h"
7
8namespace al {
9
10class PartsModel : public LiveActor {
11public:
12 PartsModel(const char*);
13 void endClipped() override;
14 void calcAnim() override;
15 void attackSensor(HitSensor* self, HitSensor* other) override;
16 bool receiveMsg(const SensorMsg* message, HitSensor* other, HitSensor* self) override;
17
18 void initPartsDirect(LiveActor*, const ActorInitInfo&, const char*, const sead::Matrix34f*,
19 const sead::Vector3f&, const sead::Vector3f&, const sead::Vector3f&, bool);
20 void initPartsSuffix(LiveActor*, const ActorInitInfo&, const char*, const char*,
21 const sead::Matrix34f*, bool);
22 void initPartsMtx(LiveActor*, const ActorInitInfo&, const char*, const sead::Matrix34f*, bool);
23 void initPartsFixFile(LiveActor*, const ActorInitInfo&, const char*, const char*, const char*);
24 void initPartsFixFileNoRegister(LiveActor*, const ActorInitInfo&, const char*, const char*,
25 const char*);
26
27 void updatePose();
28 void offSyncAppearAndHide();
29 void onSyncAppearAndHide();
30
31private:
32 LiveActor* mParentModel = nullptr;
33 const sead::Matrix34f* mJointMtx = nullptr;
34 bool mIsUseLocalPos = false;
35 sead::Vector3f mLocalTrans = sead::Vector3f(0.0f, 0.0f, 0.0f);
36 sead::Vector3f mLocalRotate = sead::Vector3f(0.0f, 0.0f, 0.0f);
37 sead::Vector3f mLocalScale = sead::Vector3f(1.0f, 1.0f, 1.0f);
38 bool mIsUseFollowMtxScale = false;
39 bool mIsUseLocalScale = false;
40 bool mIsUpdate = true;
41};
42
43} // namespace al
44