A reimplementation of Mario Kart Wii's physics engine in C++
Loading...
Searching...
No Matches
ObjectCollidable.hh
1#pragma once
2
3#include "game/field/obj/ObjectBase.hh"
4
5#include "game/field/ObjectCollisionBase.hh"
6
7namespace Kinoko {
8
9namespace Kart {
10
11class KartObject;
12enum class Reaction;
13
14} // namespace Kart
15
16namespace Field {
17
19public:
21 ObjectCollidable(const char *name, const EGG::Vector3f &pos, const EGG::Vector3f &rot,
22 const EGG::Vector3f &scale);
23 ~ObjectCollidable() override;
24
25 void load() override;
26 void calcCollisionTransform() override;
27 [[nodiscard]] f32 getCollisionRadius() const override;
28
29 virtual void loadAABB(f32 maxSpeed);
30 virtual void loadAABB(f32 radius, f32 maxSpeed);
31 virtual void processKartReactions(Kart::KartObject *kartObj, Kart::Reaction &reactionOnKart,
32 Kart::Reaction &reactionOnObj);
33
35 virtual Kart::Reaction onCollision(Kart::KartObject * /*kartObj*/,
36 Kart::Reaction reactionOnKart, Kart::Reaction /*reactionOnObj*/,
37 EGG::Vector3f & /*hitDepth*/) {
38 return reactionOnKart;
39 }
40
41 virtual void onWallCollision(Kart::KartObject *, const EGG::Vector3f &) {}
42 virtual void onObjectCollision(Kart::KartObject *) {}
43 virtual bool checkCollision(ObjectCollisionBase *lhs, EGG::Vector3f &dist);
44
46 virtual const EGG::Vector3f &getCollisionTranslation() const {
47 return EGG::Vector3f::zero;
48 }
49
51 [[nodiscard]] virtual ObjectCollisionBase *collision() const {
52 return m_collision;
53 }
54
55protected:
56 void createCollision() override;
57
59 [[nodiscard]] virtual const EGG::Vector3f &collisionCenter() const {
60 return EGG::Vector3f::zero;
61 }
62
63 void registerManagedObject();
64
65 ObjectCollisionBase *m_collision;
66};
67
68} // namespace Field
69
70} // namespace Kinoko
f32 getCollisionRadius() const override
Finds the radius that fits fully in a BoxColUnit.
The base class that all objects' collision inherits from.
The highest level abstraction for a kart.
Definition KartObject.hh:11
A 3D float vector.
Definition Vector.hh:107