A reimplementation of Mario Kart Wii's physics engine in C++
Loading...
Searching...
No Matches
ObjectCollisionCylinder.hh
1#pragma once
2
3#include "game/field/ObjectCollisionBase.hh"
4
5namespace Field {
6
8public:
9 ObjectCollisionCylinder(f32 radius, f32 height, const EGG::Vector3f &center);
10 ~ObjectCollisionCylinder() override;
11
12 void transform(const EGG::Matrix34f &mat, const EGG::Vector3f &scale) override;
13 void transform(const EGG::Matrix34f &mat, const EGG::Vector3f &scale,
14 const EGG::Vector3f &speed) override;
15
17 const EGG::Vector3f &getSupport(const EGG::Vector3f &v) const override {
18 return m_top.dot(v) > m_bottom.dot(v) ? m_top : m_bottom;
19 }
20
22 f32 getBoundingRadius() const override {
23 return m_worldRadius;
24 }
25
26private:
27 f32 m_radius;
28 f32 m_height;
29 EGG::Vector3f m_pos;
30
31 f32 m_worldRadius;
32 f32 m_worldHeight;
33 EGG::Vector3f m_worldPos;
34
35 EGG::Vector3f m_center;
36 EGG::Vector3f m_top;
37 EGG::Vector3f m_bottom;
38};
39
40} // namespace Field
A 3 x 4 matrix.
Definition Matrix.hh:8
The base class that all objects' collision inherits from.
Pertains to collision.
A 3D float vector.
Definition Vector.hh:88
f32 dot(const Vector3f &rhs) const
The dot product between two vectors.
Definition Vector.hh:187