1#pragma once
2
3#include <math/seadMatrix.h>
4#include <math/seadVector.h>
5
6#include "Library/HostIO/HioNode.h"
7
8enum class CollisionShapeId : u32 {
9 Arrow,
10 Sphere,
11 Disk,
12};
13
14class CollisionShapeInfoBase : public al::HioNode {
15public:
16 CollisionShapeInfoBase(CollisionShapeId, const char*);
17
18 virtual const sead::Vector3f& getBoundingCenter() const { return sead::Vector3f::zero; }
19
20 virtual const sead::Vector3f& getBoundingCenterWorld() const { return sead::Vector3f::zero; }
21
22 virtual f32 getBoundingRadius() const { return 0.0f; }
23
24 virtual f32 getBoundingRadiusWorld() const { return 0.0f; }
25
26 virtual f32 getCheckStepRange() const { return 100000.0f; }
27
28 virtual f32 getCheckStepRangeWorld() const { return 100000.0f; }
29
30 virtual void updateShapeOffset(const sead::Vector3f&) {}
31
32 virtual void calcWorldShapeInfo(const sead::Matrix34f&, f32) {}
33
34 virtual void calcRelativeShapeInfo(const sead::Matrix34f&) {}
35
36 CollisionShapeId getId() const { return mId; }
37
38 const char* getName() const { return mName; }
39
40private:
41 CollisionShapeId mId;
42 const char* mName;
43};
44