1#pragma once
2
3#include <container/seadPtrArray.h>
4#include <gfx/seadColor.h>
5
6namespace al {
7class PrePassLightBase;
8class ParameterObj;
9class ParameterIo;
10class ParameterBool;
11class ParameterStringRef;
12class ParameterC4f;
13class ParameterArray;
14class LiveActor;
15class Resource;
16struct ActorInitInfo;
17
18class ActorPrePassLightKeeper {
19public:
20 class UserColor {
21 public:
22 UserColor();
23
24 private:
25 ParameterObj* mList;
26 ParameterStringRef* mName;
27 ParameterC4f* mColor;
28 };
29
30 static_assert(sizeof(UserColor) == 0x18);
31
32 static bool isExistFile(const Resource*, const char*);
33
34 ActorPrePassLightKeeper(LiveActor*);
35 void init(const Resource*, const ActorInitInfo&, const char*);
36 void initLightNum(s32);
37 void initAfterPlacement();
38 void appear(bool);
39 void requestKill();
40 void hideModel();
41 void updateHideModel(bool);
42 PrePassLightBase* getLightBase(const char*);
43 PrePassLightBase* getLightBase(s32);
44 sead::Color4f* findUserColor(const char*);
45
46private:
47 ParameterIo* mParameterIo;
48 ParameterBool* mIsIgnoreHideModel;
49 ParameterArray* mLightParameters;
50 ParameterArray* mUserColorParameters;
51 sead::PtrArray<PrePassLightBase*> mLights;
52 sead::PtrArray<UserColor*> mUserColors;
53 LiveActor* mLiveActor;
54 bool mIsIgnorePrePassLightYaml;
55};
56
57static_assert(sizeof(ActorPrePassLightKeeper) == 0x50);
58} // namespace al
59