1#pragma once
2
3#include <math/seadBoundBox.h>
4
5#include "Library/Area/AreaObj.h"
6
7namespace al {
8class ClippingJudge;
9}
10
11class BirdGatheringSpotArea : public al::AreaObj {
12public:
13 struct AreaClippingInfo {
14 AreaClippingInfo();
15
16 bool isClipped = false;
17 f32 sightDistance = 0.0f;
18 sead::BoundBox3f boundingBox = sead::BoundBox3f(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
19 };
20
21 BirdGatheringSpotArea(const char* name);
22
23 void init(const al::AreaInitInfo& initInfo) override;
24
25 void calcRandomGroundTrans(sead::Vector3f* trans) const;
26 f32 getSightDistance() const;
27 bool isClipped() const;
28 bool isGreaterPriorityNotClipped(const BirdGatheringSpotArea* other) const;
29 void updateClipping(const al::ClippingJudge*, const sead::Vector3f&);
30
31private:
32 s32 mBirdNumMax = 0;
33 AreaClippingInfo mClippingInfo;
34};
35