1#pragma once
2
3#include <basis/seadTypes.h>
4
5#include "Library/Execute/IUseExecutor.h"
6#include "Library/HostIO/HioNode.h"
7
8namespace al {
9class ClippingGroupHolder;
10class ClippingJudge;
11class ViewInfoCtrl;
12class AreaObjDirector;
13class PlayerHolder;
14class SceneCameraInfo;
15class ViewIdHolder;
16struct ActorInitInfo;
17class LiveActor;
18class ClippingActorHolder;
19class ClippingFarAreaObserver;
20
21class ClippingDirector : public HioNode, public IUseExecutor {
22public:
23 ClippingDirector(s32 maxActors, const AreaObjDirector* areaObjDirector,
24 const PlayerHolder* playerHolder, const SceneCameraInfo* sceneCameraInfo);
25 ~ClippingDirector();
26
27 void endInit(const AreaObjDirector* areaObjDirector);
28 void setDefaultFarClipDistance(f32 distance);
29 void setDefaultFarClipDistanceSub(f32 distance);
30 f32 getFarClipDistance() const;
31 void registerActor(LiveActor* liveActor, const ViewIdHolder* idHolder);
32 void addToGroupClipping(LiveActor* liveActor, const ActorInitInfo& actorInitInfo);
33 void onGroupClipping(LiveActor* liveActor);
34 void offGroupClipping(LiveActor* liveActor);
35 void execute() override;
36 void startCheckViewCtrlByCameraPos();
37 void startCheckViewCtrlByLookAtPos();
38 void startCheckViewCtrlByPlayerPos();
39
40private:
41 ClippingJudge* mClippingJudge = nullptr;
42 ClippingFarAreaObserver* mFarAreaObserver = nullptr;
43 ClippingActorHolder* mClippingActorHolder = nullptr;
44 ClippingGroupHolder* mGroupHolder = nullptr;
45 ViewInfoCtrl* mViewInfoCtrl = nullptr;
46 bool mIsExecute = true;
47};
48
49static_assert(sizeof(ClippingDirector) == 0x38);
50} // namespace al
51