1#pragma once
2
3#include <math/seadBoundBox.h>
4#include <prim/seadSafeString.h>
5
6namespace agl {
7class DrawContext;
8}
9
10namespace alNerveFunction {
11class NerveActionCollector;
12}
13
14namespace al {
15struct ActorInitInfo;
16class AudioDirector;
17class CollisionDirector;
18class GraphicsSystemInfo;
19class LayoutInitInfo;
20class LiveActor;
21class LiveActorGroup;
22class Nerve;
23class PartsEffectGroup;
24class PlacementInfo;
25class SceneCameraInfo;
26
27void initActor(LiveActor* actor, const ActorInitInfo& initInfo);
28void initActorSuffix(LiveActor* actor, const ActorInitInfo& initInfo, const char* suffix);
29void initActorChangeModel(LiveActor* actor, const ActorInitInfo& initInfo);
30void initActorChangeModelSuffix(LiveActor* actor, const ActorInitInfo& initInfo,
31 const char* suffix);
32void initActorWithArchiveName(LiveActor* actor, const ActorInitInfo& initInfo,
33 const sead::SafeString& archiveName, const char* suffix);
34void initChildActorWithArchiveNameWithPlacementInfo(LiveActor* actor, const ActorInitInfo& initInfo,
35 const sead::SafeString& archiveName,
36 const char* suffix);
37void initChildActorWithArchiveNameNoPlacementInfo(LiveActor* actor, const ActorInitInfo& initInfo,
38 const sead::SafeString& archiveName,
39 const char* suffix);
40LiveActor* createChildLinkSimpleActor(const char* actorName, const char* linkName,
41 const ActorInitInfo& initInfo, bool alive);
42LiveActor* createChildLinkMapPartsActor(const char* actorName, const char* linkName,
43 const ActorInitInfo& initInfo, s32 linkIndex, bool alive);
44void initMapPartsActor(LiveActor* actor, const ActorInitInfo& initInfo, const char* suffix);
45void initLinksActor(LiveActor* actor, const ActorInitInfo& initInfo, const char* suffix,
46 s32 linkIndex);
47ActorInitInfo* createLinksPlayerActorInfo(LiveActor* actor, const ActorInitInfo& initInfo);
48const char* getLinksActorClassName(const ActorInitInfo& initInfo, const char* linkName,
49 s32 linkIndex);
50const char* getLinksActorDisplayName(const ActorInitInfo& initInfo, const char* linkName,
51 s32 linkIndex);
52const char* getLinksActorObjectName(const ActorInitInfo& initInfo, const char* linkName,
53 s32 linkIndex);
54void initCreateActorWithPlacementInfo(LiveActor* actor, const ActorInitInfo& initInfo);
55void initCreateActorWithPlacementInfo(LiveActor* actor, const ActorInitInfo& initInfo,
56 const PlacementInfo& placementInfo);
57void initCreateActorNoPlacementInfo(LiveActor* actor, const ActorInitInfo& initInfo);
58void initCreateActorNoPlacementInfoNoViewId(LiveActor* actor, const ActorInitInfo& initInfo);
59LiveActor* createPlacementActorFromFactory(const ActorInitInfo& initInfo,
60 const PlacementInfo* placementInfo);
61LiveActor* createLinksActorFromFactory(const ActorInitInfo& initInfo, const char* linkName,
62 s32 linkNum);
63LiveActorGroup* createLinksActorGroupFromFactory(const ActorInitInfo& initInfo,
64 const char* linkName, const char* groupName);
65LiveActorGroup* tryCreateLinksActorGroupFromFactory(const ActorInitInfo& initInfo,
66 const char* linkName, const char* groupName);
67LiveActor* tryCreateLinksActorFromFactorySingle(const ActorInitInfo& initInfo,
68 const char* linkName);
69void createAndRegisterLinksActorFromFactory(LiveActorGroup* group, const ActorInitInfo& initInfo,
70 const char* linkName);
71void makeMapPartsModelName(sead::BufferedSafeString* modelName, sead::BufferedSafeString* path,
72 const PlacementInfo& placementInfo);
73void makeMapPartsModelName(sead::BufferedSafeString* modelName, sead::BufferedSafeString* path,
74 const ActorInitInfo& initInfo);
75const char* tryGetMapPartsSuffix(const ActorInitInfo& initInfo, const char* suffix);
76void initMapPartsActorWithArchiveName(LiveActor* actor, const ActorInitInfo& initInfo,
77 const char* fileName, const char* suffix);
78void initNerve(LiveActor* actor, const Nerve* nerve, s32 maxStates);
79void initNerveAction(LiveActor* actor, const char* actionName,
80 alNerveFunction::NerveActionCollector* collector, s32 maxStates);
81bool trySyncStageSwitchAppear(LiveActor* actor);
82bool trySyncStageSwitchKill(LiveActor* actor);
83bool trySyncStageSwitchAppearAndKill(LiveActor* actor);
84bool tryListenStageSwitchAppear(LiveActor* actor);
85bool tryListenStageSwitchKill(LiveActor* actor);
86void syncSensorScaleY(LiveActor* actor);
87void syncSensorAndColliderScaleY(LiveActor* actor);
88void setMaterialCode(LiveActor* actor, const char* materialCode);
89void initMaterialCode(LiveActor* actor, const ActorInitInfo& initInfo);
90bool tryAddDisplayRotate(LiveActor* actor, const ActorInitInfo& initInfo);
91bool tryAddDisplayOffset(LiveActor* actor, const ActorInitInfo& initInfo);
92bool tryAddDisplayScale(LiveActor* actor, const ActorInitInfo& initInfo);
93const PlacementInfo& getPlacementInfo(const ActorInitInfo& initInfo);
94const LayoutInitInfo& getLayoutInitInfo(const ActorInitInfo& initInfo);
95AudioDirector* getAudioDirector(const ActorInitInfo& initInfo);
96CollisionDirector* getCollisionDirectorFromInfo(const ActorInitInfo& initInfo);
97const SceneCameraInfo* getSceneCameraInfoFromInfo(const ActorInitInfo& initInfo);
98GraphicsSystemInfo* getGraphicsSystemInfo(const ActorInitInfo& initInfo);
99agl::DrawContext* getDrawContext(const ActorInitInfo& initInfo);
100void getActorRecourseDataF32(f32* val, LiveActor* actor, const char* fileName,
101 const char* entryName);
102void getActorRecourseDataString(const char** val, LiveActor* actor, const char* fileName,
103 const char* entryName);
104void getActorRecourseDataV3f(sead::Vector3f* val, LiveActor* actor, const char* fileName,
105 const char* entryName);
106void getActorRecourseDataBox3f(sead::BoundBox3f* val, LiveActor* actor, const char* fileName,
107 const char* entryName);
108PartsEffectGroup* createPartsEffectGroup(LiveActor* actor, const ActorInitInfo& initInfo,
109 s32 maxEffects);
110
111} // namespace al
112