Kinoko
A reimplementation of Mario Kart Wii's physics engine in C++
Toggle main menu visibility
Loading...
Searching...
No Matches
ObjectCollisionSphere.cc
1
#include "ObjectCollisionSphere.hh"
2
3
namespace
Kinoko::Field
{
4
6
ObjectCollisionSphere::ObjectCollisionSphere(f32 radius,
const
EGG::Vector3f ¢er)
7
: m_hasTranslation(false), m_radius(radius), m_pos(center), m_scaledRadius(radius),
8
m_scaledPos(center), m_worldPos(center) {}
9
11
ObjectCollisionSphere::~ObjectCollisionSphere() =
default
;
12
14
void
ObjectCollisionSphere::transform(
const
EGG::Matrix34f &mat,
const
EGG::Vector3f &scale) {
15
m_hasTranslation =
false
;
16
17
if
(scale.x != 1.0f) {
18
m_scaledPos = m_pos * scale.x;
19
m_scaledRadius = m_radius * scale.x;
20
}
21
22
m_worldPos = mat.multVector(m_scaledPos);
23
}
24
26
void
ObjectCollisionSphere::transform(
const
EGG::Matrix34f &mat,
const
EGG::Vector3f &scale,
27
const
EGG::Vector3f &speed) {
28
m_hasTranslation =
true
;
29
m_translation = speed;
30
31
if
(scale.x != 1.0f) {
32
m_scaledPos = m_pos * scale.x;
33
m_scaledRadius = m_radius * scale.x;
34
}
35
36
m_worldPos = mat.multVector(m_scaledPos);
37
38
m_center = m_worldPos - speed;
39
}
40
42
const
EGG::Vector3f &ObjectCollisionSphere::getSupport(
const
EGG::Vector3f &v)
const
{
43
if
(!m_hasTranslation) {
44
return
m_worldPos;
45
}
46
47
return
m_worldPos.dot(v) > m_center.dot(v) ? m_worldPos : m_center;
48
}
49
50
}
// namespace Kinoko::Field
Kinoko::Field
Pertains to collision.
Definition
BoxColManager.cc:10
game
field
ObjectCollisionSphere.cc
Made by
Malleo
. Logo by
vabold
. Website generated by
Doxygen
1.17.0