1#pragma once
2
3#include "Library/Area/AreaShape.h"
4
5namespace al {
6
7class AreaShapeCube : public AreaShape {
8public:
9 enum class OriginType { Center, Base, Top };
10
11 AreaShapeCube(AreaShapeCube::OriginType);
12
13 bool isInVolume(const sead::Vector3f&) const override;
14 bool isInVolumeOffset(const sead::Vector3f&, f32) const override;
15 bool calcNearestEdgePoint(sead::Vector3f*, const sead::Vector3f&) const override;
16 bool checkArrowCollision(sead::Vector3f*, sead::Vector3f*, const sead::Vector3f&,
17 const sead::Vector3f&) const override;
18 bool calcLocalBoundingBox(sead::BoundBox3f*) const override;
19
20 bool isInLocalVolume(const sead::Vector3f&) const;
21
22private:
23 AreaShapeCube::OriginType mOriginType;
24};
25
26class AreaShapeCubeBase : public AreaShapeCube {
27public:
28 AreaShapeCubeBase() : AreaShapeCube(AreaShapeCube::OriginType::Base) {}
29};
30
31class AreaShapeCubeCenter : public AreaShapeCube {
32public:
33 AreaShapeCubeCenter() : AreaShapeCube(AreaShapeCube::OriginType::Center) {}
34};
35
36class AreaShapeCubeTop : public AreaShapeCube {
37public:
38 AreaShapeCubeTop() : AreaShapeCube(AreaShapeCube::OriginType::Top) {}
39};
40
41} // namespace al
42