1#include "ObjectCollisionSphere.hh"
6ObjectCollisionSphere::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) {}
11ObjectCollisionSphere::~ObjectCollisionSphere() =
default;
14void ObjectCollisionSphere::transform(
const EGG::Matrix34f &mat,
const EGG::Vector3f &scale) {
15 m_hasTranslation =
false;
17 if (scale.x != 1.0f) {
18 m_scaledPos = m_pos * scale.x;
19 m_scaledRadius = m_radius * scale.x;
22 m_worldPos = mat.multVector(m_scaledPos);
26void ObjectCollisionSphere::transform(
const EGG::Matrix34f &mat,
const EGG::Vector3f &scale,
27 const EGG::Vector3f &speed) {
28 m_hasTranslation =
true;
29 m_translation = speed;
31 if (scale.x != 1.0f) {
32 m_scaledPos = m_pos * scale.x;
33 m_scaledRadius = m_radius * scale.x;
36 m_worldPos = mat.multVector(m_scaledPos);
38 m_center = m_worldPos - speed;
42const EGG::Vector3f &ObjectCollisionSphere::getSupport(
const EGG::Vector3f &v)
const {
43 if (!m_hasTranslation) {
47 return m_worldPos.dot(v) > m_center.dot(v) ? m_worldPos : m_center;