A reimplementation of Mario Kart Wii's physics engine in C++
Loading...
Searching...
No Matches
ObjectBoble.cc
1#include "ObjectBoble.hh"
2
3namespace Kinoko::Field {
4
6ObjectBoble::ObjectBoble(const System::MapdataGeoObj &params) : ObjectCollidable(params) {}
7
9ObjectBoble::~ObjectBoble() = default;
10
12void ObjectBoble::init() {
13 m_railInterpolator->init(0.0f, 0);
14 m_curTangentDir = m_railInterpolator->curTangentDir();
15 m_railInterpolator->setPerPointVelocities(true);
16 setScale(EGG::Vector3f::unit);
17}
18
20void ObjectBoble::calc() {
21 m_railInterpolator->calc();
22 setPos(m_railInterpolator->curPos());
23 calcTangent();
24}
25
27void ObjectBoble::calcTangent() {
28 m_curTangentDir = Interpolate(0.2f, m_curTangentDir, m_railInterpolator->curTangentDir());
29 m_curTangentDir.normalise();
30
31 EGG::Vector3f axis = m_curTangentDir.cross(EGG::Vector3f::ex);
32 if (axis.normalise() == 0.0f) {
33 axis = m_curTangentDir.cross(EGG::Vector3f::ez);
34 axis.normalise();
35 }
36
37 setMatrixTangentTo(axis.cross(m_curTangentDir), m_curTangentDir);
38}
39
40} // namespace Kinoko::Field
Pertains to collision.