1#pragma once
2
3#include <gfx/seadColor.h>
4#include <math/seadMatrix.h>
5#include <math/seadVector.h>
6
7namespace al {
8struct ActorInitInfo;
9class AreaInitInfo;
10class PlacementInfo;
11class PlacementId;
12
13bool isValidInfo(const PlacementInfo& placementInfo);
14bool isPlaced(const ActorInitInfo& initInfo);
15
16void getObjectName(const char** name, const ActorInitInfo& initInfo);
17void getObjectName(const char** name, const PlacementInfo& placementInfo);
18bool tryGetObjectName(const char** name, const ActorInitInfo& initInfo);
19bool tryGetObjectName(const char** name, const PlacementInfo& placementInfo);
20bool isObjectName(const ActorInitInfo& initInfo, const char* name);
21bool isObjectName(const PlacementInfo& placementInfo, const char* name);
22bool isObjectNameSubStr(const ActorInitInfo& initInfo, const char* name);
23bool isObjectNameSubStr(const PlacementInfo& placementInfo, const char* name);
24
25void getClassName(const char** name, const ActorInitInfo& initInfo);
26void getClassName(const char** name, const PlacementInfo& placementInfo);
27bool tryGetClassName(const char** name, const ActorInitInfo& initInfo);
28bool tryGetClassName(const char** name, const PlacementInfo& placementInfo);
29bool isClassName(const ActorInitInfo& initInfo, const char* name);
30bool isClassName(const PlacementInfo& placementInfo, const char* name);
31
32void getDisplayName(const char** name, const ActorInitInfo& initInfo);
33void getDisplayName(const char** name, const PlacementInfo& placementInfo);
34bool tryGetDisplayName(const char** name, const ActorInitInfo& initInfo);
35bool tryGetDisplayName(const char** name, const PlacementInfo& placementInfo);
36
37void getPlacementTargetFile(const char** targetFile, const PlacementInfo& placementInfo);
38
39void getTrans(sead::Vector3f* trans, const ActorInitInfo& initInfo);
40void getTrans(sead::Vector3f* trans, const PlacementInfo& placementInfo);
41void multZoneMtx(sead::Vector3f* trans, const PlacementInfo& placementInfo);
42bool tryGetTrans(sead::Vector3f* trans, const ActorInitInfo& initInfo);
43bool tryGetTrans(sead::Vector3f* trans, const PlacementInfo& placementInfo);
44
45void getRotate(sead::Vector3f* rotate, const PlacementInfo& placementInfo);
46bool tryGetRotate(sead::Vector3f* rotate, const ActorInitInfo& initInfo);
47bool tryGetRotate(sead::Vector3f* rotate, const PlacementInfo& placementInfo);
48bool tryGetZoneMatrixTR(sead::Matrix34f* matrix, const PlacementInfo& placementInfo);
49
50void getQuat(sead::Quatf* quat, const ActorInitInfo& initInfo);
51void getQuat(sead::Quatf* quat, const PlacementInfo& placementInfo);
52bool tryGetQuat(sead::Quatf* quat, const ActorInitInfo& initInfo);
53bool tryGetQuat(sead::Quatf* quat, const PlacementInfo& placementInfo);
54
55void getScale(sead::Vector3f* scale, const PlacementInfo& placementInfo);
56void getScale(f32* x, f32* y, f32* z, const PlacementInfo& placementInfo);
57bool tryGetScale(sead::Vector3f* scale, const ActorInitInfo& initInfo);
58bool tryGetScale(sead::Vector3f* scale, const PlacementInfo& placementInfo);
59
60void getSide(sead::Vector3f* side, const ActorInitInfo& initInfo);
61void getSide(sead::Vector3f* side, const PlacementInfo& placementInfo);
62bool tryGetSide(sead::Vector3f* side, const ActorInitInfo& initInfo);
63bool tryGetSide(sead::Vector3f* side, const PlacementInfo& placementInfo);
64
65void getUp(sead::Vector3f* up, const ActorInitInfo& initInfo);
66void getUp(sead::Vector3f* up, const PlacementInfo& placementInfo);
67bool tryGetUp(sead::Vector3f* up, const ActorInitInfo& initInfo);
68bool tryGetUp(sead::Vector3f* up, const PlacementInfo& placementInfo);
69
70void getFront(sead::Vector3f* front, const ActorInitInfo& initInfo);
71void getFront(sead::Vector3f* front, const PlacementInfo& placementInfo);
72bool tryGetFront(sead::Vector3f* front, const ActorInitInfo& initInfo);
73bool tryGetFront(sead::Vector3f* front, const PlacementInfo& placementInfo);
74
75bool tryGetLocalAxis(sead::Vector3f* dir, const ActorInitInfo& initInfo, s32 axis);
76bool tryGetLocalAxis(sead::Vector3f* dir, const PlacementInfo& placementInfo, s32 axis);
77bool tryGetLocalSignAxis(sead::Vector3f* dir, const ActorInitInfo& initInfo, s32 axis);
78bool tryGetLocalSignAxis(sead::Vector3f* dir, const PlacementInfo& placementInfo, s32 axis);
79
80bool tryGetMatrixTR(sead::Matrix34f* matrix, const ActorInitInfo& initInfo);
81bool tryGetMatrixTR(sead::Matrix34f* matrix, const PlacementInfo& placementInfo);
82bool tryGetMatrixTRS(sead::Matrix34f* matrix, const ActorInitInfo& initInfo);
83bool tryGetMatrixTRS(sead::Matrix34f* matrix, const PlacementInfo& placementInfo);
84bool tryGetInvertMatrixTR(sead::Matrix34f* matrix, const ActorInitInfo& initInfo);
85bool tryGetInvertMatrixTR(sead::Matrix34f* matrix, const PlacementInfo& placementInfo);
86
87void calcMatrixMultParent(sead::Matrix34f* matrix, const ActorInitInfo& initInfo1,
88 const ActorInitInfo& initInfo2);
89void calcMatrixMultParent(sead::Matrix34f* matrix, const PlacementInfo& placementInfo1,
90 const PlacementInfo& placementInfo2);
91
92void getArg(s32* arg, const ActorInitInfo& initInfo, const char* key);
93void getArg(s32* arg, const PlacementInfo& placementInfo, const char* key);
94bool tryGetArg(s32* arg, const ActorInitInfo& initInfo, const char* key);
95bool tryGetArg(s32* arg, const PlacementInfo& placementInfo, const char* key);
96void getArg(f32* arg, const ActorInitInfo& initInfo, const char* key);
97void getArg(f32* arg, const PlacementInfo& placementInfo, const char* key);
98bool tryGetArg(f32* arg, const ActorInitInfo& initInfo, const char* key);
99bool tryGetArg(f32* arg, const PlacementInfo& placementInfo, const char* key);
100void getArg(bool* arg, const ActorInitInfo& initInfo, const char* key);
101void getArg(bool* arg, const PlacementInfo& placementInfo, const char* key);
102bool tryGetArg(bool* arg, const ActorInitInfo& initInfo, const char* key);
103bool tryGetArg(bool* arg, const PlacementInfo& placementInfo, const char* key);
104
105s32 getArgS32(const ActorInitInfo& actorInitInfo, const char* key);
106f32 getArgF32(const ActorInitInfo& actorInitInfo, const char* key);
107void getArgV3f(sead::Vector3f* arg, const ActorInitInfo& actorInitInfo, const char* key);
108void getArgV3f(sead::Vector3f* arg, const PlacementInfo& placementInfo, const char* key);
109bool tryGetArgV3f(sead::Vector3f* arg, const ActorInitInfo& actorInitInfo, const char* key);
110bool tryGetArgV3f(sead::Vector3f* arg, const PlacementInfo& placementInfo, const char* key);
111
112bool isArgBool(const ActorInitInfo& initInfo, const char* key);
113bool isArgBool(const PlacementInfo& placementInfo, const char* key);
114bool isArgString(const ActorInitInfo& initInfo, const char* key, const char* arg);
115bool isArgString(const PlacementInfo& placementInfo, const char* key, const char* arg);
116
117void getStringArg(const char** arg, const ActorInitInfo& initInfo, const char* key);
118void getStringArg(const char** arg, const PlacementInfo& placementInfo, const char* key);
119void getStringArg(const char** arg, const AreaInitInfo& initInfo, const char* key);
120const char* getStringArg(const ActorInitInfo& initInfo, const char* key);
121const char* getStringArg(const PlacementInfo& placementInfo, const char* key);
122const char* getStringArg(const AreaInitInfo& initInfo, const char* key);
123bool tryGetStringArg(const char** arg, const ActorInitInfo& initInfo, const char* key);
124bool tryGetStringArg(const char** arg, const PlacementInfo& initInfo, const char* key);
125bool tryGetStringArg(const char** arg, const AreaInitInfo& initInfo, const char* key);
126bool tryGetArgV2f(sead::Vector2f* arg, const ActorInitInfo& initInfo, const char* key);
127bool tryGetArgV2f(sead::Vector2f* arg, const PlacementInfo& initInfo, const char* key);
128bool tryGetArgColor(sead::Color4f* arg, const ActorInitInfo& initInfo, const char* key);
129bool tryGetArgColor(sead::Color4f* arg, const PlacementInfo& initInfo, const char* key);
130
131void getLayerConfigName(const char** name, const ActorInitInfo& initInfo);
132void getLayerConfigName(const char** name, const PlacementInfo& initInfo);
133bool tryGetZoneNameIfExist(const char** name, const PlacementInfo& placementInfo);
134void getPlacementId(PlacementId* placementId, const PlacementInfo& placementInfo);
135
136bool tryGetBoolArgOrFalse(const ActorInitInfo& initInfo, const char* key);
137s32 getCountPlacementInfo(const PlacementInfo& placementInfo);
138void getPlacementInfoByKey(PlacementInfo* outPlacementInfo, const PlacementInfo& placementInfo,
139 const char* key);
140bool tryGetPlacementInfoByKey(PlacementInfo* outPlacementInfo, const PlacementInfo& placementInfo,
141 const char* key);
142void getPlacementInfoByIndex(PlacementInfo* outPlacementInfo, const PlacementInfo& placementInfo,
143 s32 index);
144bool tryGetPlacementInfoByIndex(PlacementInfo* outPlacementInfo, const PlacementInfo& placementInfo,
145 s32 index);
146void getPlacementInfoAndKeyNameByIndex(PlacementInfo* outPlacementInfo, const char** outKey,
147 const PlacementInfo&, s32 index);
148bool tryGetPlacementInfoAndKeyNameByIndex(PlacementInfo* outPlacementInfo, const char** outKey,
149 const PlacementInfo&, s32 index);
150
151PlacementId* createPlacementId(const ActorInitInfo& initInfo);
152PlacementId* createPlacementId(const PlacementInfo& placementInfo);
153bool tryGetPlacementId(PlacementId* placementId, const ActorInitInfo& initInfo);
154bool tryGetPlacementId(PlacementId* placementId, const PlacementInfo& placementInfo);
155void getPlacementId(PlacementId* placementId, const ActorInitInfo& initInfo);
156bool isEqualPlacementId(const PlacementId& placementId, const PlacementId& otherPlacementId);
157bool isEqualPlacementId(const PlacementInfo& placementInfo,
158 const PlacementInfo& otherPlacementInfo);
159
160bool isExistRail(const ActorInitInfo& initInfo, const char* linkName);
161
162bool tryGetRailIter(PlacementInfo* railPlacementInfo, const PlacementInfo& placementInfo,
163 const char* linkName);
164bool tryGetLinksInfo(PlacementInfo* railPlacementInfo, const PlacementInfo& placementInfo,
165 const char* linkName);
166bool tryGetMoveParameterRailIter(PlacementInfo* railPlacementInfo,
167 const PlacementInfo& placementInfo);
168bool tryGetRailPointPos(sead::Vector3f* railPoint, const PlacementInfo& placementInfo);
169void getRailPointHandlePrev(sead::Vector3f* railPoint, const PlacementInfo& placementInfo);
170bool tryGetRailPointHandlePrev(sead::Vector3f* railPoint, const PlacementInfo& placementInfo);
171void getRailPointHandleNext(sead::Vector3f* railPoint, const PlacementInfo& placementInfo);
172bool tryGetRailPointHandleNext(sead::Vector3f* railPoint, const PlacementInfo& placementInfo);
173
174bool isExistGraphRider(const ActorInitInfo& initInfo);
175
176s32 calcLinkChildNum(const ActorInitInfo& initInfo, const char* linkName);
177s32 calcLinkChildNum(const PlacementInfo& placementInfo, const char* linkName);
178
179bool isExistLinkChild(const ActorInitInfo& initInfo, const char* linkName, s32 index);
180bool isExistLinkChild(const PlacementInfo& placementInfo, const char* linkName, s32 index);
181bool isExistLinkChild(const AreaInitInfo& initInfo, const char* linkName, s32 index);
182
183s32 calcLinkNestNum(const ActorInitInfo& initInfo, const char* linkName);
184s32 calcLinkNestNum(const PlacementInfo& placementInfo, const char* linkName);
185
186void getLinksInfo(PlacementInfo* linkPlacementInfo, const PlacementInfo& placementInfo,
187 const char* linkName);
188void getLinksInfoByIndex(PlacementInfo* linkPlacementInfo, const PlacementInfo& placementInfo,
189 const char* linkName, s32 index);
190void getLinksInfo(PlacementInfo* linkPlacementInfo, const ActorInitInfo& initInfo,
191 const char* linkName);
192void getLinksInfoByIndex(PlacementInfo* linkPlacementInfo, const ActorInitInfo& initInfo,
193 const char* linkName, s32 index);
194bool tryGetLinksInfo(PlacementInfo* linkPlacementInfo, const ActorInitInfo& initInfo,
195 const char* linkName);
196
197void getLinksMatrix(sead::Matrix34f* matrix, const ActorInitInfo& initInfo, const char* linkName);
198void getLinksMatrixByIndex(sead::Matrix34f* matrix, const ActorInitInfo& initInfo,
199 const char* linkName, s32 index);
200void getLinkTR(sead::Vector3f* trans, sead::Vector3f* rotate, const PlacementInfo& placementInfo,
201 const char* linkName);
202void getLinkTR(sead::Vector3f* trans, sead::Vector3f* rotate, const ActorInitInfo& initInfo,
203 const char* linkName);
204void getLinkTR(sead::Vector3f* trans, sead::Vector3f* rotate, const AreaInitInfo& initInfo,
205 const char* linkName);
206void getLinksQT(sead::Quatf* quat, sead::Vector3f* trans, const ActorInitInfo& initInfo,
207 const char* linkName);
208void getLinksQT(sead::Quatf* quat, sead::Vector3f* trans, const PlacementInfo& placementInfo,
209 const char* linkName);
210
211bool tryGetLinksQT(sead::Quatf*, sead::Vector3f*, const ActorInitInfo& initInfo,
212 const char* linkName);
213bool tryGetLinksQTS(sead::Quatf*, sead::Vector3f*, sead::Vector3f*, const ActorInitInfo& initInfo,
214 const char* linkName);
215bool tryGetLinksMatrixTR(sead::Matrix34f* matrix, const ActorInitInfo& initInfo,
216 const char* linkName);
217bool tryGetLinksMatrixTR(sead::Matrix34f* matrix, const AreaInitInfo& initInfo,
218 const char* linkName);
219bool tryGetLinksMatrixTRS(sead::Matrix34f* matrix, const ActorInitInfo& initInfo,
220 const char* linkName);
221bool tryGetLinksTrans(sead::Vector3f* trans, const ActorInitInfo& initInfo, const char* linkName);
222bool tryGetLinksTrans(sead::Vector3f* trans, const PlacementInfo& placementInfo,
223 const char* linkName);
224bool tryGetLinksQuat(sead::Quatf* quat, const ActorInitInfo& initInfo, const char* linkName);
225bool tryGetLinksTR(sead::Vector3f* trans, sead::Vector3f* rotate, const ActorInitInfo& initInfo,
226 const char* linkName);
227
228void getChildTrans(sead::Vector3f* trans, const PlacementInfo& placementInfo, const char* linkName);
229void getChildTrans(sead::Vector3f* trans, const ActorInitInfo& initInfo, const char* linkName);
230void getChildTrans(sead::Vector3f* trans, const AreaInitInfo& initInfo, const char* linkName);
231void getChildLinkT(sead::Vector3f* trans, const ActorInitInfo& initInfo, const char* linkName,
232 s32 index);
233void getChildLinkTR(sead::Vector3f* trans, sead::Vector3f* rotate, const ActorInitInfo& initInfo,
234 const char* linkName, s32 index);
235
236s32 calcMatchNameLinkCount(const PlacementInfo& placementInfo, const char* matchName);
237s32 calcLinkCountClassName(const PlacementInfo& placementInfo, const char* className);
238
239bool tryGetZoneMatrixTR(sead::Matrix34f* matrix, const ActorInitInfo& initInfo);
240bool tryGetDisplayOffset(sead::Vector3f* offset, const ActorInitInfo& initInfo);
241bool tryGetDisplayOffset(sead::Vector3f* offset, const PlacementInfo& placementInfo);
242bool tryGetChildDisplayOffset(sead::Vector3f* offset, const ActorInitInfo& initInfo,
243 const char* linkName);
244bool tryGetDisplayRotate(sead::Vector3f* rotate, const ActorInitInfo& initInfo);
245bool tryGetDisplayScale(sead::Vector3f* scale, const ActorInitInfo& initInfo);
246
247} // namespace al
248
249namespace alPlacementFunction {
250
251s32 getCameraId(const al::ActorInitInfo& initInfo);
252bool getLinkGroupId(al::PlacementId* groupId, const al::ActorInitInfo& initInfo,
253 const char* linkName);
254bool isEnableLinkGroupId(const al::ActorInitInfo& initInfo, const char* linkName);
255bool isEnableGroupClipping(const al::ActorInitInfo& initInfo);
256bool getClippingGroupId(al::PlacementId* groupId, const al::ActorInitInfo& initInfo);
257al::PlacementId* createClippingViewId(const al::PlacementInfo& placementInfo);
258bool getClippingViewId(al::PlacementId* viewId, const al::PlacementInfo& placementInfo);
259bool getClippingViewId(al::PlacementId* viewId, const al::ActorInitInfo& initInfo);
260void getModelName(const char** modelName, const al::ActorInitInfo& initInfo);
261void getModelName(const char** modelName, const al::PlacementInfo& placementInfo);
262bool tryGetModelName(const char** modelName, const al::PlacementInfo& placementInfo);
263bool tryGetModelName(const char** modelName, const al::ActorInitInfo& initInfo);
264
265} // namespace alPlacementFunction
266