1#pragma once
2
3#include <basis/seadTypes.h>
4#include <math/seadVector.h>
5
6namespace al {
7class AreaObjFactory;
8class AreaObjMtxConnecterHolder;
9class AreaObjGroup;
10class AreaObj;
11class AreaInitInfo;
12
13class AreaObjDirector {
14public:
15 AreaObjDirector();
16 void init(const AreaObjFactory* factory);
17 void endInit();
18 void update();
19 void placement(const AreaInitInfo& initInfo);
20 void placement(const AreaInitInfo* initInfo, s32 initInfoCount);
21 void createAreaObjGroup(const AreaInitInfo& initInfo);
22 void createAreaObjGroupBuffer();
23 void placementAreaObj(const AreaInitInfo& initInfo);
24 AreaObjGroup* getAreaObjGroup(const char* name) const;
25 bool isExistAreaGroup(const char* name) const;
26 AreaObj* getInVolumeAreaObj(const char* name, const sead::Vector3f& position);
27 AreaObjMtxConnecterHolder* getMtxConnecterHolder() const;
28
29private:
30 const AreaObjFactory* mFactory = nullptr;
31 AreaObjMtxConnecterHolder* mMtxConnecterHolder = nullptr;
32 AreaObjGroup** mAreaGroups = nullptr;
33 u32 mAreaGroupCount = 0;
34};
35} // namespace al
36