1#pragma once
2
3#include <basis/seadTypes.h>
4#include <math/seadBoundBox.h>
5#include <thread/seadThread.h>
6
7namespace al {
8struct ActorInitInfo;
9class ClippingActorInfo;
10class LiveActor;
11class ClippingGroupHolder;
12class ClippingJudge;
13
14class ClippingActorHolder {
15public:
16 ClippingActorHolder(s32);
17 void updateAsync(sead::Thread*, s64);
18 ~ClippingActorHolder();
19 void update(const ClippingJudge*);
20 ClippingActorInfo* registerActor(LiveActor*);
21 ClippingActorInfo* initGroupClipping(LiveActor*, const ActorInitInfo&);
22 void endInit(ClippingGroupHolder*);
23 void validateClipping(LiveActor*);
24 void invalidateClipping(LiveActor*);
25 void addToClippingTarget(LiveActor*);
26 void removeFromClippingTarget(LiveActor*);
27 void onGroupClipping(LiveActor*);
28 void offGroupClipping(LiveActor*);
29 f32 getClippingRadius(const LiveActor*);
30 ClippingActorInfo* find(const LiveActor*) const;
31 const sead::Vector3f& getClippingCenterPos(const LiveActor*);
32 void setTypeToSphere(LiveActor*, f32, const sead::Vector3f*);
33 void setTypeToObb(LiveActor* liveActor, const sead::BoundBox3f&);
34 const sead::BoundBox3f& getClippingObb(const LiveActor*);
35 void setNearClipDistance(LiveActor*, f32);
36 void setFarClipLevel20M(LiveActor*);
37 void setFarClipLevelMax(LiveActor*);
38 void updateFarClipLevel();
39
40private:
41 void* filler[0x8];
42};
43
44} // namespace al
45