mirror of
https://github.com/isledecomp/isle.git
synced 2025-10-23 08:24:16 +00:00
Implement/match LegoCarRaceActor::VTable0x1c
(#1078)
* Implement/match `LegoCarRaceActor::VTable0x1c` * Fix formatting * Fix LegoEdge::CWVertex() * Fix more CI issues * Trz to fix lvalue compile issue * Fix formatting --------- Co-authored-by: jonschz <jonschz@users.noreply.github.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
#ifndef LEGOJETSKIRACEACTOR_H
|
||||
#define LEGOJETSKIRACEACTOR_H
|
||||
|
||||
#include "legocarraceactor.h"
|
||||
#include "legoracespecial.h"
|
||||
|
||||
// VTABLE: LEGO1 0x100da208 LegoCarRaceActor
|
||||
// VTABLE: LEGO1 0x100da228 LegoRaceActor
|
||||
@@ -32,9 +32,9 @@ public:
|
||||
float p_f1,
|
||||
float p_f2,
|
||||
Vector3& p_v3
|
||||
) override; // vtable+0x6c
|
||||
void VTable0x70(float p_float) override; // vtable+0x70
|
||||
void VTable0x1c() override; // vtable+0x1c
|
||||
) override; // vtable+0x6c
|
||||
void VTable0x70(float p_float) override; // vtable+0x70
|
||||
MxS32 VTable0x1c(undefined4 p_param1, LegoEdge* p_edge) override; // vtable+0x1c
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10081d50
|
||||
// LegoJetskiRaceActor::`scalar deleting destructor'
|
||||
|
@@ -13,6 +13,7 @@ class Vector3;
|
||||
// LegoMouseController
|
||||
|
||||
// VTABLE: LEGO1 0x100d85b8
|
||||
// VTABLE: BETA10 0x101bcc80
|
||||
// SIZE 0x70
|
||||
class LegoNavController : public MxCore {
|
||||
public:
|
||||
@@ -22,6 +23,7 @@ public:
|
||||
MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
||||
|
||||
// FUNCTION: LEGO1 0x10054b80
|
||||
// FUNCTION: BETA10 0x1009e5f0
|
||||
const char* ClassName() const override // vtable+0x0c
|
||||
{
|
||||
// STRING: LEGO1 0x100f66d8
|
||||
@@ -77,7 +79,9 @@ public:
|
||||
static MxS32 GetNumLocations();
|
||||
static LegoLocation* GetLocation(MxU32 p_location);
|
||||
|
||||
// FUNCTION: BETA10 0x100b0f40
|
||||
void SetLinearVel(MxFloat p_linearVel) { m_linearVel = p_linearVel; }
|
||||
|
||||
MxFloat GetLinearVel() { return m_linearVel; }
|
||||
MxFloat GetRotationalVel() { return m_rotationalVel; }
|
||||
MxFloat GetMaxLinearVel() { return m_maxLinearVel; }
|
||||
|
@@ -59,7 +59,7 @@ public:
|
||||
virtual MxBool GetUserNavFlag() { return m_userNavFlag; } // vtable+0x7c
|
||||
|
||||
virtual MxResult VTable0x80(
|
||||
Vector3& p_point1,
|
||||
const Vector3& p_point1,
|
||||
Vector3& p_point2,
|
||||
Vector3& p_point3,
|
||||
Vector3& p_point4
|
||||
@@ -165,7 +165,7 @@ protected:
|
||||
LegoUnknown100db7f4* m_destEdge; // 0xe0
|
||||
MxFloat m_unk0xe4; // 0xe4
|
||||
MxBool m_collideBox; // 0xe8
|
||||
undefined m_unk0xe9; // 0xe9
|
||||
MxBool m_unk0xe9; // 0xe9
|
||||
MxBool m_userNavFlag; // 0xea
|
||||
MxMatrix m_unk0xec; // 0xec
|
||||
LegoPathEdgeContainer* m_grec; // 0x134
|
||||
|
@@ -60,7 +60,7 @@ public:
|
||||
}
|
||||
|
||||
LegoPathController* m_controller; // 0x00
|
||||
LegoEdge* m_edge; // 0x04
|
||||
LegoUnknown100db7f4* m_edge; // 0x04
|
||||
};
|
||||
|
||||
LegoPathController();
|
||||
@@ -121,6 +121,16 @@ public:
|
||||
static MxResult Init();
|
||||
static MxResult Reset();
|
||||
|
||||
// FUNCTION: BETA10 0x100cf580
|
||||
static LegoUnknown100db7f4* GetControlEdgeA(MxS32 p_index) { return g_ctrlEdgesA[p_index].m_edge; }
|
||||
|
||||
// FUNCTION: BETA10 0x100cf5b0
|
||||
static LegoPathBoundary* GetControlBoundaryA(MxS32 p_index) { return g_ctrlBoundariesA[p_index].m_boundary; }
|
||||
|
||||
// These two are an educated guess because BETA10 does not have the g_ctrl.*B globals
|
||||
static LegoUnknown100db7f4* GetControlEdgeB(MxS32 p_index) { return g_ctrlEdgesB[p_index].m_edge; }
|
||||
static LegoPathBoundary* GetControlBoundaryB(MxS32 p_index) { return g_ctrlBoundariesB[p_index].m_boundary; }
|
||||
|
||||
private:
|
||||
void FUN_10046970();
|
||||
MxResult Read(LegoStorage* p_storage);
|
||||
@@ -140,6 +150,15 @@ private:
|
||||
MxU16 m_numT; // 0x1e
|
||||
LegoPathCtrlEdgeSet m_pfsE; // 0x20
|
||||
LegoPathActorSet m_actors; // 0x30
|
||||
|
||||
// Names verified by BETA10
|
||||
static CtrlBoundary* g_ctrlBoundariesA;
|
||||
static CtrlEdge* g_ctrlEdgesA;
|
||||
|
||||
static const char* g_unk0x100f42f0[];
|
||||
static const char* g_unk0x100f4330[];
|
||||
static CtrlBoundary* g_ctrlBoundariesB;
|
||||
static CtrlEdge* g_ctrlEdgesB;
|
||||
};
|
||||
|
||||
// clang-format off
|
||||
|
@@ -1,8 +1,8 @@
|
||||
#ifndef LEGORACERS_H
|
||||
#define LEGORACERS_H
|
||||
|
||||
#include "legocarraceactor.h"
|
||||
#include "legoracemap.h"
|
||||
#include "legoracespecial.h"
|
||||
|
||||
#define LEGORACECAR_UNKNOWN_0 0
|
||||
#define LEGORACECAR_UNKNOWN_1 1
|
||||
|
@@ -64,7 +64,7 @@ public:
|
||||
// FUNCTION: LEGO1 0x10012c00
|
||||
virtual float FUN_10012c00() { return m_unk0x18; }
|
||||
|
||||
virtual void VTable0x1c(); // vtable+0x1c
|
||||
virtual MxS32 VTable0x1c(undefined4 p_param1, LegoEdge* p_edge); // vtable+0x1c
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10012c30
|
||||
// LegoCarRaceActor::`vbase destructor'
|
||||
@@ -86,6 +86,8 @@ protected:
|
||||
|
||||
// Could be the current timestamp for time-based movement
|
||||
MxFloat m_unk0x1c; // 0x1c
|
||||
|
||||
static MxFloat g_unk0x100f7aec;
|
||||
};
|
||||
|
||||
// GLOBAL: LEGO1 0x100da0b0
|
Reference in New Issue
Block a user