1#pragma once
2
3#include <prim/seadStorageFor.h>
4
5#include "Library/Collision/CollisionPartsTriangle.h"
6
7class CollisionShapeInfoBase;
8class CollisionShapeInfoArrow;
9class CollisionShapeInfoSphere;
10class CollisionShapeInfoDisk;
11
12class CollidedShapeResult {
13public:
14 CollidedShapeResult(const CollisionShapeInfoBase* shapeInfo);
15
16 void setArrowHitInfo(const al::ArrowHitInfo& arrowHitInfo);
17 void setSphereHitInfo(const al::SphereHitInfo& sphereHitInfo);
18 void setDiskHitInfo(const al::DiskHitInfo& diskHitInfo);
19
20 bool isArrow() const;
21 bool isSphere() const;
22 bool isDisk() const;
23
24 const al::ArrowHitInfo& getArrowHitInfo() const;
25 const al::SphereHitInfo& getSphereHitInfo() const;
26 const al::DiskHitInfo& getDiskHitInfo() const;
27
28 const CollisionShapeInfoArrow* getShapeInfoArrow() const;
29 const CollisionShapeInfoSphere* getShapeInfoSphere() const;
30 const CollisionShapeInfoDisk* getShapeInfoDisk() const;
31
32 void operator=(const CollidedShapeResult& other);
33
34private:
35 const CollisionShapeInfoBase* mShapeInfo;
36 al::ArrowHitInfo mArrowHitInfo;
37 al::SphereHitInfo mSphereHitInfo;
38 al::DiskHitInfo mDiskHitInfo;
39};
40
41static_assert(sizeof(CollidedShapeResult) == 0x1e8);
42