1#pragma once
2
3#include <math/seadMatrix.h>
4#include <math/seadVector.h>
5
6namespace al {
7struct ActorInitInfo;
8class AreaInitInfo;
9class AreaObj;
10class AreaObjGroup;
11class IUseAreaObj;
12class LiveActor;
13class PlacementInfo;
14class PlayerHolder;
15class SwitchKeepOnAreaGroup;
16class SwitchOnAreaGroup;
17class ValidatorBase;
18
19AreaObj* tryFindAreaObjPlayerOne(const PlayerHolder* holder, const char* name);
20AreaObj* tryFindAreaObjPlayerAll(const PlayerHolder* holder, const char* name);
21AreaObj* tryGetAreaObjPlayerAll(const LiveActor* actor, const AreaObjGroup* areaGroup);
22bool isInAreaObjPlayerAll(const LiveActor* actor, const AreaObj* areaObj);
23bool isInAreaObjPlayerAll(const LiveActor* actor, const AreaObjGroup* areaGroup);
24bool isInAreaObjPlayerAnyOne(const LiveActor* actor, const AreaObj* areaObj);
25bool isInAreaObjPlayerAnyOne(const LiveActor* actor, const AreaObjGroup* areaGroup);
26AreaObj* createAreaObj(const ActorInitInfo& actorInitInfo, const char* name);
27void initAreaInitInfo(AreaInitInfo* areaInfo, const ActorInitInfo& actorInfo);
28AreaObj* createLinkArea(const ActorInitInfo& initInfo, const char* name, const char* areaName);
29void initAreaInitInfo(AreaInitInfo* areaInfo, const PlacementInfo& placementInfo,
30 const ActorInitInfo& actorInfo);
31AreaObj* tryCreateLinkArea(const ActorInitInfo& initInfo, const char* name, const char* areaName);
32AreaObjGroup* createLinkAreaGroup(const ActorInitInfo& initInfo, const char* name,
33 const char* groupName, const char* areaName);
34AreaObjGroup* createLinkAreaGroup(LiveActor* actor, const ActorInitInfo& initInfo, const char* name,
35 const char* groupName, const char* areaName);
36AreaObj* tryFindAreaObj(const LiveActor* actor, const char* name);
37bool isInAreaObj(const LiveActor* actor, const char* name);
38bool isInAreaObjPlayerOne(const PlayerHolder* holder, const char* name);
39bool isInAreaObjPlayerAll(const PlayerHolder* holder, const char* name);
40bool isInAreaObjPlayerOneIgnoreAreaTarget(const PlayerHolder* holder, const char* name);
41bool isInDeathArea(const LiveActor* actor);
42bool isInWaterArea(const LiveActor* actor);
43bool isInPlayerControlOffArea(const LiveActor* actor);
44f32 calcWaterSinkDepth(const LiveActor* actor);
45void registerAreaHostMtx(const IUseAreaObj* areaObj, const sead::Matrix34f* mtx,
46 const ActorInitInfo& initInfo);
47void registerAreaHostMtx(const IUseAreaObj* areaObj, const sead::Matrix34f* mtx,
48 const ActorInitInfo& initInfo, const ValidatorBase& validator);
49void registerAreaHostMtx(const LiveActor* actor, const ActorInitInfo& initInfo);
50void registerAreaHostMtx(const LiveActor* actor, const ActorInitInfo& initInfo,
51 const ValidatorBase& validator);
52void registerAreaSyncHostMtx(const IUseAreaObj* areaObj, const sead::Matrix34f* mtx,
53 const ActorInitInfo& initInfo);
54void registerAreaSyncHostMtx(const IUseAreaObj* areaObj, const sead::Matrix34f* mtx,
55 const ActorInitInfo& initInfo, const ValidatorBase& validator);
56void registerAreaSyncHostMtx(const LiveActor* actor, const ActorInitInfo& initInfo);
57void registerAreaSyncHostMtx(const LiveActor* actor, const ActorInitInfo& initInfo,
58 const ValidatorBase& validator);
59bool tryReviseVelocityInsideAreaObj(sead::Vector3f* nearestEdgePos, LiveActor* actor,
60 AreaObjGroup* areaGroup, const AreaObj* areaObj);
61SwitchKeepOnAreaGroup* tryCreateSwitchKeepOnAreaGroup(LiveActor* actor,
62 const ActorInitInfo& initInfo);
63SwitchOnAreaGroup* tryCreateSwitchOnAreaGroup(LiveActor* actor, const ActorInitInfo& initInfo);
64
65} // namespace al
66