A reimplementation of Mario Kart Wii's physics engine in C++
Loading...
Searching...
No Matches
Kinoko::Render::KartCamera Class Reference

#include <KartCamera.hh>

Description

Manager class for the forward and backwards cameras.

Responsible for setting the camera state and performing camera collision checks.

Definition at line 43 of file KartCamera.hh.

Public Member Functions

void init ()
 
void calc ()
 

Static Public Member Functions

static KartCameraCreateInstance ()
 
static void DestroyInstance ()
 
static KartCameraInstance ()
 

Private Member Functions

void calcForward (f32 t, const Kart::KartObjectProxy *proxy)
 
void calcDriftOffset (const Kart::KartObjectProxy *proxy)
 
void calcCamera (f32 param1, f32 param2, f32 param3, KartCameraState &state, bool isBackwards, const Kart::KartObjectProxy *proxy, const EGG::Vector3f &targetPos) const
 
void calcAirtimeHeight (KartCameraState &state, const Kart::KartObjectProxy *proxy) const
 
void initPos ()
 
void calcCollision (KartCameraState &state, bool isRear) const
 

Static Private Member Functions

static EGG::Vector3f Interpolate (f32 t, const EGG::Vector3f &v0, const EGG::Vector3f &v1)
 

Private Attributes

f32 m_driftYaw
 Rotation induced when drifting.
 
f32 m_hopPosY
 Induces a downwards camera position offset.
 
EGG::Vector3f m_forward
 
EGG::Vector3f m_right
 
const Kart::KartParam::KartCameraParamm_camParams
 
KartCameraState m_forwardCamera
 Forward camera state.
 
KartCameraState m_backwardCamera
 Rear camera state.
 

Static Private Attributes

static KartCameras_instance = nullptr
 

Constructor & Destructor Documentation

◆ KartCamera()

Kinoko::Render::KartCamera::KartCamera ( )
private0x805A1D10

Definition at line 46 of file KartCamera.cc.

Member Function Documentation

◆ calc()

void Kinoko::Render::KartCamera::calc ( )
0x805A21D0

Definition at line 8 of file KartCamera.cc.

◆ calcAirtimeHeight()

void Kinoko::Render::KartCamera::calcAirtimeHeight ( KartCameraState & state,
const Kart::KartObjectProxy * proxy ) const
private0x805A463C

Definition at line 144 of file KartCamera.cc.

◆ calcCamera()

void Kinoko::Render::KartCamera::calcCamera ( f32 param1,
f32 param2,
f32 param3,
KartCameraState & state,
bool isBackwards,
const Kart::KartObjectProxy * proxy,
const EGG::Vector3f & targetPos ) const
private0x805A34B0

Definition at line 85 of file KartCamera.cc.

◆ calcCollision()

void Kinoko::Render::KartCamera::calcCollision ( KartCameraState & state,
bool isRear ) const
private0x805A5D70

Definition at line 187 of file KartCamera.cc.

◆ calcDriftOffset()

void Kinoko::Render::KartCamera::calcDriftOffset ( const Kart::KartObjectProxy * proxy)
private0x805A3070

Definition at line 52 of file KartCamera.cc.

◆ calcForward()

void Kinoko::Render::KartCamera::calcForward ( f32 t,
const Kart::KartObjectProxy * proxy )
inlineprivate0x805A2B84

Definition at line 69 of file KartCamera.hh.

◆ CreateInstance()

KartCamera * Kinoko::Render::KartCamera::CreateInstance ( )
static

Definition at line 32 of file KartCamera.cc.

◆ DestroyInstance()

void Kinoko::Render::KartCamera::DestroyInstance ( )
static

Definition at line 38 of file KartCamera.cc.

◆ init()

void Kinoko::Render::KartCamera::init ( )
inline0x805A2034

Definition at line 48 of file KartCamera.hh.

◆ initPos()

void Kinoko::Render::KartCamera::initPos ( )
private0x805A49BC

Definition at line 168 of file KartCamera.cc.

◆ Instance()

static KartCamera * Kinoko::Render::KartCamera::Instance ( )
inlinestaticnodiscard

Definition at line 60 of file KartCamera.hh.

◆ Interpolate()

static EGG::Vector3f Kinoko::Render::KartCamera::Interpolate ( f32 t,
const EGG::Vector3f & v0,
const EGG::Vector3f & v1 )
inlinestaticprivate0x805A2C34

Definition at line 83 of file KartCamera.hh.

Member Data Documentation

◆ m_backwardCamera

KartCameraState Kinoko::Render::KartCamera::m_backwardCamera
private

Rear camera state.

Definition at line 101 of file KartCamera.hh.

◆ m_camParams

const Kart::KartParam::KartCameraParam* Kinoko::Render::KartCamera::m_camParams
private
Warning
Kinoko assumes the use of the 16:9 camera. It is possible for a time trial desync to occur due to the difference in camera distance between 4:3 and 16:9. This varying distance can cause an ObjectKCL transformation matrix to be updated for one camera's collision check but not the other. As far as we know, this can only occur on the DS Delfino Square Field::ObjectTownBridge, and there are no naturally occurring desyncs of this type.

Definition at line 98 of file KartCamera.hh.

◆ m_driftYaw

f32 Kinoko::Render::KartCamera::m_driftYaw
private

Rotation induced when drifting.

Definition at line 87 of file KartCamera.hh.

◆ m_forward

EGG::Vector3f Kinoko::Render::KartCamera::m_forward
private

Definition at line 89 of file KartCamera.hh.

◆ m_forwardCamera

KartCameraState Kinoko::Render::KartCamera::m_forwardCamera
private

Forward camera state.

Definition at line 100 of file KartCamera.hh.

◆ m_hopPosY

f32 Kinoko::Render::KartCamera::m_hopPosY
private

Induces a downwards camera position offset.

Definition at line 88 of file KartCamera.hh.

◆ m_right

EGG::Vector3f Kinoko::Render::KartCamera::m_right
private

Definition at line 90 of file KartCamera.hh.

◆ s_instance

KartCamera * Kinoko::Render::KartCamera::s_instance = nullptr
staticprivate

Definition at line 103 of file KartCamera.hh.