1#include "ObjectShip64.hh"
9ObjectShip64::~ObjectShip64() {
10 delete m_auxCollision;
14void ObjectShip64::init() {
15 m_railInterpolator->init(0, 0);
17 m_tangent = m_railInterpolator->curTangentDir();
18 m_railInterpolator->setPerPointVelocities(
true);
25void ObjectShip64::calc() {
26 m_railInterpolator->calc();
28 setPos(m_railInterpolator->curPos());
30 m_tangent = Interpolate(0.2f, m_tangent, m_railInterpolator->curTangentDir());
31 m_tangent.normalise();
33 setMatrixFromOrthonormalBasisAndPos(m_tangent);
37void ObjectShip64::createCollision() {
38 constexpr f32 RADIUS = 1500.0f;
39 constexpr f32 HEIGHT = 3500.0f;
41 ObjectCollidable::createCollision();
42 m_auxCollision =
new ObjectCollisionCylinder(RADIUS, HEIGHT, EGG::Vector3f::zero);
46void ObjectShip64::calcCollisionTransform() {
47 ObjectCollidable::calcCollisionTransform();
51 v = m_transform.base(0);
54 m_transform.setAxisRotation(F_PI / 2.0f, v);
56 m_transform.setBase(3, v);
58 m_auxCollision->transform(m_transform, m_scale);
62bool ObjectShip64::checkCollision(ObjectCollisionBase *lhs,
EGG::Vector3f &dist) {
66 bool has_col = lhs->check(*m_collision, colDist) || lhs->check(*m_auxCollision, auxDist);
67 dist = colDist + auxDist;
f32 normalise()
Normalizes the vector and returns the original length.