Vtable progress

This commit is contained in:
disinvite 2024-01-19 23:54:48 -05:00
parent d034f02df1
commit 5225dad03a
50 changed files with 485 additions and 19 deletions

View File

@ -63,13 +63,16 @@ add_library(lego1 SHARED
LEGO1/lego/legoomni/src/entity/legoactorpresenter.cpp
LEGO1/lego/legoomni/src/entity/legoanimactor.cpp
LEGO1/lego/legoomni/src/entity/legocameracontroller.cpp
LEGO1/lego/legoomni/src/entity/legocarraceactor.cpp
LEGO1/lego/legoomni/src/entity/legoentity.cpp
LEGO1/lego/legoomni/src/entity/legoentitypresenter.cpp
LEGO1/lego/legoomni/src/entity/legojetski.cpp
LEGO1/lego/legoomni/src/entity/legojetskiraceactor.cpp
LEGO1/lego/legoomni/src/entity/legonavcontroller.cpp
LEGO1/lego/legoomni/src/entity/legopathactor.cpp
LEGO1/lego/legoomni/src/entity/legopovcontroller.cpp
LEGO1/lego/legoomni/src/entity/legorace.cpp
LEGO1/lego/legoomni/src/entity/legoraceactor.cpp
LEGO1/lego/legoomni/src/entity/legoworld.cpp
LEGO1/lego/legoomni/src/entity/legoworldpresenter.cpp
LEGO1/lego/legoomni/src/gasstation/gasstation.cpp

View File

@ -26,6 +26,8 @@ class Act2Brick : public LegoPathActor {
return !strcmp(p_name, Act2Brick::ClassName()) || LegoEntity::IsA(p_name);
}
virtual MxS32 VTable0x94() override; // vtable+0x94
// SYNTHETIC: LEGO1 0x1007a450
// Act2Brick::`scalar deleting destructor'
};

View File

@ -7,12 +7,23 @@
class Act3Shark : public LegoAnimActor {
public:
// FUNCTION: LEGO1 0x100430c0
inline virtual const char* ClassName() const override
inline virtual const char* ClassName() const override // vtable+0x0c
{
// STRING: LEGO1 0x100f03a0
return "Act3Shark";
}
// FUNCTION: LEGO1 0x1001a130
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
{
return !strcmp(p_name, Act3Shark::ClassName()) || LegoAnimActor::IsA(p_name);
}
virtual void ParseAction(char*) override; // vtable+0x20
virtual void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30
virtual void VTable0x70(float p_float); // vtable+0x70
virtual void VTable0x74(Matrix4& p_transform); // vtable+0x74
// SYNTHETIC: LEGO1 0x10043020
// Act3Shark::`scalar deleting destructor'
};

View File

@ -22,6 +22,8 @@ class AmbulanceMissionState : public LegoState {
return !strcmp(p_name, AmbulanceMissionState::ClassName()) || LegoState::IsA(p_name);
}
virtual MxResult VTable0x1c(LegoFileStream* p_legoFileStream); // vtable+0x1c
inline MxU16 GetColor(MxU8 p_id)
{
switch (p_id) {

View File

@ -7,6 +7,8 @@
// VTABLE: LEGO1 0x100d6790
class BumpBouy : public LegoAnimActor {
public:
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
// FUNCTION: LEGO1 0x100274e0
inline virtual const char* ClassName() const override // vtable+0x0c
{
@ -20,6 +22,11 @@ class BumpBouy : public LegoAnimActor {
return !strcmp(p_name, BumpBouy::ClassName()) || LegoAnimActor::IsA(p_name);
}
virtual void ParseAction(char*) override; // vtable+0x20
virtual void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30
virtual void VTable0x70(float p_float); // vtable+0x70
virtual void VTable0x74(Matrix4& p_transform); // vtable+0x74
// SYNTHETIC: LEGO1 0x10027490
// BumpBouy::`scalar deleting destructor'
};

View File

@ -29,6 +29,12 @@ class GasStation : public LegoWorld {
return !strcmp(p_name, GasStation::ClassName()) || LegoWorld::IsA(p_name);
}
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void VTable0x50() override; // vtable+0x50
virtual MxBool VTable0x5c() override; // vtable+0x5c
virtual MxBool VTable0x64() override; // vtable+0x64
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
// SYNTHETIC: LEGO1 0x100048a0
// GasStation::`scalar deleting destructor'

View File

@ -25,6 +25,10 @@ class HistoryBook : public LegoWorld {
return !strcmp(p_name, HistoryBook::ClassName()) || LegoWorld::IsA(p_name);
}
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void VTable0x50(); // vtable+0x50
virtual MxBool VTable0x64(); // vtable+0x64
// SYNTHETIC: LEGO1 0x100824b0
// HistoryBook::`scalar deleting destructor'
};

View File

@ -23,6 +23,8 @@ class HospitalState : public LegoState {
return !strcmp(p_name, HospitalState::ClassName()) || LegoState::IsA(p_name);
}
virtual MxResult VTable0x1c(LegoFileStream* p_legoFileStream); // vtable+0x1c
// SYNTHETIC: LEGO1 0x100764c0
// HospitalState::`scalar deleting destructor'

View File

@ -6,6 +6,8 @@
// VTABLE: LEGO1 0x100d5178
class IsleActor : public LegoActor {
public:
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
// FUNCTION: LEGO1 0x1000e660
inline virtual const char* ClassName() const override // vtable+0x0c
{
@ -18,6 +20,8 @@ class IsleActor : public LegoActor {
{
return !strcmp(p_name, IsleActor::ClassName()) || LegoActor::IsA(p_name);
}
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
};
// SYNTHETIC: LEGO1 0x1000e940

View File

@ -17,6 +17,8 @@ class IslePathActor : public LegoPathActor {
// FUNCTION: LEGO1 0x10002e10
inline virtual ~IslePathActor() override { IslePathActor::Destroy(TRUE); } // vtable+0x0
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
// FUNCTION: LEGO1 0x10002ea0
inline virtual const char* ClassName() const override // vtable+0x0c
{

View File

@ -3,6 +3,7 @@
#include "decomp.h"
#include "islepathactor.h"
#include "mxtype17notificationparam.h"
// VTABLE: LEGO1 0x100d9ec8
// SIZE 0x164
@ -23,6 +24,12 @@ class Jetski : public IslePathActor {
return !strcmp(p_name, Jetski::ClassName()) || IslePathActor::IsA(p_name);
}
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void VTable0x70(float p_float); // vtable+0x70
virtual MxU32 VTable0xcc() override; // vtable+0xcc
virtual MxU32 VTable0xd4(MxType17NotificationParam&) override; // vtable+0xd4
virtual void VTable0xe4() override; // vtable+0xe4
// SYNTHETIC: LEGO1 0x1007e5c0
// Jetski::`scalar deleting destructor'

View File

@ -10,6 +10,8 @@ class JukeBoxEntity : public LegoEntity {
JukeBoxEntity();
virtual ~JukeBoxEntity() override; // vtable+0x0
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
// FUNCTION: LEGO1 0x10085cc0
inline virtual const char* ClassName() const override // vtable+0x0c
{

View File

@ -24,6 +24,9 @@ class LegoActor : public LegoEntity {
return !strcmp(p_name, LegoActor::ClassName()) || LegoEntity::IsA(p_name);
}
virtual void ParseAction(char*) override; // vtable+0x20
virtual void SetROI(LegoROI* p_roi, MxBool p_bool1, MxBool p_bool2) override; // vtable+0x24
// FUNCTION: LEGO1 0x10002cc0
virtual MxFloat VTable0x50() { return m_unk0x68; } // vtable+0x50
// FUNCTION: LEGO1 0x10002cd0

View File

@ -19,6 +19,14 @@ class LegoCarRaceActor : public LegoRaceActor {
return !strcmp(p_name, LegoCarRaceActor::ClassName()) || LegoRaceActor::IsA(p_name);
}
virtual void VTable0x68() override; // vtable+0x68
virtual void VTable0x6c() override; // vtable+0x6c
virtual void VTable0x70(float p_float) override; // vtable+0x70
virtual MxS32 VTable0x90() override; // vtable+0x90
virtual MxS32 VTable0x94() override; // vtable+0x94
virtual void VTable0x98() override; // vtable+0x98
virtual void VTable0x9c() override; // vtable+0x9c
// SYNTHETIC: LEGO1 0x10081610
// LegoCarRaceActor::`scalar deleting destructor'
};

View File

@ -38,6 +38,9 @@ class LegoInputManager : public MxPresenter {
virtual MxResult Tickle() override; // vtable+0x8
// FUNCTION: LEGO1 0x1005b8c0
virtual MxResult PutData() { return SUCCESS; }; // vtable+0x4c
MxResult Create(HWND p_hwnd);
void Destroy();
void CreateAndAcquireKeyboard(HWND p_hwnd);

View File

@ -19,6 +19,11 @@ class LegoJetskiRaceActor : public LegoCarRaceActor {
return !strcmp(p_name, LegoJetskiRaceActor::ClassName()) || LegoCarRaceActor::IsA(p_name);
}
virtual void VTable0x6c() override; // vtable+0x6c
virtual void VTable0x70(float p_float) override; // vtable+0x70
virtual void VTable0x98() override; // vtable+0x98
virtual void VTable0x9c() override; // vtable+0x9c
// SYNTHETIC: LEGO1 0x10081d40
// LegoJetskiRaceActor::`scalar deleting destructor'
};

View File

@ -37,7 +37,8 @@ class LegoNavController : public MxCore {
);
LegoNavController();
virtual ~LegoNavController() override; // vtable+0x0
virtual ~LegoNavController() override; // vtable+0x0
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
// FUNCTION: LEGO1 0x10054b80
inline const char* ClassName() const override // vtable+0xc

View File

@ -25,6 +25,7 @@ class LegoPathActor : public LegoActor {
return !strcmp(p_name, LegoPathActor::ClassName()) || LegoActor::IsA(p_name);
}
virtual void ParseAction(char*) override; // vtable+0x20
virtual void VTable0x68(); // vtable+0x68
virtual void VTable0x6c(); // vtable+0x6c
virtual void VTable0x70(float p_float); // vtable+0x70

View File

@ -2,6 +2,7 @@
#define LEGORACEACTOR_H
#include "legoanimactor.h"
#include "realtime/matrix.h"
// VTABLE: LEGO1 0x100d5b88
class LegoRaceActor : public LegoAnimActor {
@ -19,6 +20,14 @@ class LegoRaceActor : public LegoAnimActor {
return !strcmp(p_name, LegoRaceActor::ClassName()) || LegoAnimActor::IsA(p_name);
}
virtual void ParseAction(char*) override; // vtable+0x20
virtual void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30
virtual void VTable0x68() override; // vtable+0x68
virtual void VTable0x70(float p_float) override; // vtable+0x70
virtual void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
virtual MxS32 VTable0x90() override; // vtable+0x90
virtual MxS32 VTable0x94() override; // vtable+0x94
// SYNTHETIC: LEGO1 0x10014ab0
// LegoRaceActor::`scalar deleting destructor'
};

View File

@ -32,7 +32,7 @@ class LegoVideoManager : public MxVideoManager {
virtual MxResult RealizePalette(MxPalette*) override; // vtable+0x30
virtual void UpdateView(MxU32 p_x, MxU32 p_y, MxU32 p_width, MxU32 p_height) override; // vtable+0x34
virtual void VTable0x38(undefined4, undefined4); // vtable+0x38
// FUNCTION: LGEO1 0x1007ab10
// FUNCTION: LEGO1 0x1007ab10
virtual LegoUnknown100d9d00* VTable0x3c() { return m_unk0x100d9d00; } // vtable+0x3c
void SetSkyColor(float p_red, float p_green, float p_blue);

View File

@ -15,21 +15,23 @@ class Pizza : public IsleActor {
Pizza();
virtual ~Pizza() override;
virtual MxResult Tickle() override; // vtable+08
virtual MxResult Tickle() override; // vtable+0x8
// FUNCTION: LEGO1 0x10037f90
inline const char* ClassName() const // vtable+0c
inline const char* ClassName() const // vtable+0xc
{
// STRING: LEGO1 0x100f038c
return "Pizza";
}
// FUNCTION: LEGO1 0x10037fa0
inline MxBool IsA(const char* p_name) const override // vtable+10
inline MxBool IsA(const char* p_name) const override // vtable+0x10
{
return !strcmp(p_name, Pizza::ClassName()) || IsleActor::IsA(p_name);
}
virtual MxResult Create(MxDSAction& p_dsAction); // vtable+0x18
// SYNTHETIC: LEGO1 0x100380e0
// Pizza::`scalar deleting destructor'

View File

@ -6,6 +6,19 @@
// VTABLE: LEGO1 0x100d48a8
// SIZE 0x68
class RaceStandsEntity : public BuildingEntity {
// FUNCTION: LEGO1 0x1000efa0
inline virtual const char* ClassName() const override // vtable+0x0c
{
// STRING: LEGO1 0x100f0300
return "RaceStandsEntity";
}
// FUNCTION: LEGO1 0x1000efb0
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
{
return !strcmp(p_name, RaceStandsEntity::ClassName()) || BuildingEntity::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x1000f9e0
// RaceStandsEntity::`scalar deleting destructor'
};

View File

@ -12,6 +12,13 @@ Act2Brick::~Act2Brick()
// TODO
}
// STUB: LEGO1 0x1007a750
MxS32 Act2Brick::VTable0x94()
{
// TODO
return 0;
}
// STUB: LEGO1 0x1007a7f0
MxResult Act2Brick::Tickle()
{

View File

@ -1 +1,25 @@
#include "act3shark.h"
// STUB: LEGO1 0x1001a1c0
void Act3Shark::VTable0x74(Matrix4& p_transform)
{
// TODO
}
// STUB: LEGO1 0x100430e0
void Act3Shark::ParseAction(char*)
{
// TODO
}
// STUB: LEGO1 0x100430f0
void Act3Shark::SetWorldSpeed(MxFloat p_worldSpeed)
{
// TODO
}
// STUB: LEGO1 0x10043100
void Act3Shark::VTable0x70(float p_float)
{
// TODO
}

View File

@ -9,3 +9,36 @@ Jetski::Jetski()
this->m_unk0x150 = 2.0;
this->m_unk0x148 = 1;
}
// STUB: LEGO1 0x1007e630
MxResult Jetski::Create(MxDSAction& p_dsAction)
{
// TODO
return SUCCESS;
}
// STUB: LEGO1 0x1007e680
void Jetski::VTable0x70(float p_float)
{
// TODO
}
// STUB: LEGO1 0x1007e6f0
void Jetski::VTable0xe4()
{
// TODO
}
// STUB: LEGO1 0x1007e750
MxU32 Jetski::VTable0xcc()
{
// TODO
return 0;
}
// STUB: LEGO1 0x1007e8e0
MxU32 Jetski::VTable0xd4(MxType17NotificationParam& p_param)
{
// TODO
return 0;
}

View File

@ -17,3 +17,15 @@ LegoActor::~LegoActor()
{
// TODO
}
// STUB: LEGO1 0x1002d390
void LegoActor::ParseAction(char*)
{
// TODO
}
// STUB: LEGO1 0x1002d670
void LegoActor::SetROI(LegoROI* p_roi, MxBool p_bool1, MxBool p_bool2)
{
// TODO
}

View File

@ -0,0 +1,45 @@
#include "legocarraceactor.h"
// STUB: LEGO1 0x10014130
void LegoCarRaceActor::VTable0x68()
{
// TODO
}
// STUB: LEGO1 0x100141a0
MxS32 LegoCarRaceActor::VTable0x90()
{
// TODO
return 0;
}
// STUB: LEGO1 0x1005d650
MxS32 LegoCarRaceActor::VTable0x94()
{
// TODO
return 0;
}
// STUB: LEGO1 0x10081830
void LegoCarRaceActor::VTable0x6c()
{
// TODO
}
// STUB: LEGO1 0x10081d10
void LegoCarRaceActor::VTable0x70(float p_float)
{
// TODO
}
// STUB: LEGO1 0x10081d20
void LegoCarRaceActor::VTable0x98()
{
// TODO
}
// STUB: LEGO1 0x10081d30
void LegoCarRaceActor::VTable0x9c()
{
// TODO
}

View File

@ -0,0 +1,25 @@
#include "legojetskiraceactor.h"
// STUB: LEGO1 0x10081fc0
void LegoJetskiRaceActor::VTable0x6c()
{
// TODO
}
// STUB: LEGO1 0x100822c0
void LegoJetskiRaceActor::VTable0x70(float p_float)
{
// TODO
}
// STUB: LEGO1 0x100822d0
void LegoJetskiRaceActor::VTable0x98()
{
// TODO
}
// STUB: LEGO1 0x100822e0
void LegoJetskiRaceActor::VTable0x9c()
{
// TODO
}

View File

@ -222,3 +222,10 @@ float LegoNavController::CalculateNewVel(float p_targetVel, float p_currentVel,
return newVel;
}
// STUB: LEGO1 0x10055a60
MxLong LegoNavController::Notify(MxParam& p_param)
{
// TODO
return 0;
}

View File

@ -68,6 +68,12 @@ void LegoPathActor::VTable0x68()
// TODO
}
// STUB: LEGO1 0x1002f020
void LegoPathActor::ParseAction(char*)
{
// TODO
}
// STUB: LEGO1 0x1002f1b0
void LegoPathActor::VTable0x9c()
{

View File

@ -0,0 +1,45 @@
#include "legoraceactor.h"
// STUB: LEGO1 0x10014190
void LegoRaceActor::VTable0x74(Matrix4& p_transform)
{
// TODO
}
// STUB: LEGO1 0x10014ca0
void LegoRaceActor::ParseAction(char*)
{
// TODO
}
// STUB: LEGO1 0x10014cb0
void LegoRaceActor::SetWorldSpeed(MxFloat p_worldSpeed)
{
// TODO
}
// STUB: LEGO1 0x10014cc0
void LegoRaceActor::VTable0x68()
{
// TODO
}
// STUB: LEGO1 0x10014cd0
void LegoRaceActor::VTable0x70(float p_float)
{
// TODO
}
// STUB: LEGO1 0x10014ce0
MxS32 LegoRaceActor::VTable0x90()
{
// TODO
return 0;
}
// STUB: LEGO1 0x10014cf0
MxS32 LegoRaceActor::VTable0x94()
{
// TODO
return 0;
}

View File

@ -19,12 +19,26 @@ GasStation::GasStation()
NotificationManager()->Register(this);
}
// STUB: LEGO1 0x10004770
MxBool GasStation::VTable0x5c()
{
// TODO
return FALSE;
}
// STUB: LEGO1 0x100048c0
GasStation::~GasStation()
{
// TODO
}
// STUB: LEGO1 0x10004990
MxResult GasStation::Create(MxDSAction& p_dsAction)
{
// TODO
return SUCCESS;
}
// STUB: LEGO1 0x10004a60
MxLong GasStation::Notify(MxParam& p_param)
{
@ -33,6 +47,18 @@ MxLong GasStation::Notify(MxParam& p_param)
return 0;
}
// STUB: LEGO1 0x10004b30
void GasStation::VTable0x50()
{
// TODO
}
// STUB: LEGO1 0x10005c40
void GasStation::VTable0x68(MxBool p_add)
{
// TODO
}
// STUB: LEGO1 0x10005c90
MxResult GasStation::Tickle()
{
@ -40,3 +66,10 @@ MxResult GasStation::Tickle()
return 0;
}
// STUB: LEGO1 0x10005e70
MxBool GasStation::VTable0x64()
{
// TODO
return FALSE;
}

View File

@ -18,3 +18,10 @@ AmbulanceMissionState::AmbulanceMissionState()
m_color4 = 0;
m_color5 = 0;
}
// STUB: LEGO1 0x10037440
MxResult AmbulanceMissionState::VTable0x1c(LegoFileStream* p_legoFileStream)
{
// TODO
return 0;
}

View File

@ -12,3 +12,10 @@ HospitalState::HospitalState()
this->m_unk0x14 = 0;
this->m_unk0x16 = 0;
}
// STUB: LEGO1 0x10076530
MxResult HospitalState::VTable0x1c(LegoFileStream* p_legoFileStream)
{
// TODO
return 0;
}

View File

@ -1 +1,32 @@
#include "bumpbouy.h"
// STUB: LEGO1 0x1000fd00
void BumpBouy::ParseAction(char*)
{
// TODO
}
// STUB: LEGO1 0x1000fd10
void BumpBouy::SetWorldSpeed(MxFloat p_worldSpeed)
{
// TODO
}
// STUB: LEGO1 0x1000fd20
void BumpBouy::VTable0x70(float p_float)
{
// TODO
}
// STUB: LEGO1 0x1000fd30
void BumpBouy::VTable0x74(Matrix4& p_transform)
{
// TODO
}
// STUB: LEGO1 0x100274d0
MxLong BumpBouy::Notify(MxParam& p_param)
{
// TODO
return 0;
}

View File

@ -12,6 +12,13 @@ HistoryBook::~HistoryBook()
// TODO
}
// STUB: LEGO1 0x10082610
MxResult HistoryBook::Create(MxDSAction& p_dsAction)
{
// TODO
return SUCCESS;
}
// STUB: LEGO1 0x10082680
MxLong HistoryBook::Notify(MxParam& p_param)
{
@ -19,3 +26,16 @@ MxLong HistoryBook::Notify(MxParam& p_param)
return 0;
}
// STUB: LEGO1 0x100826f0
void HistoryBook::VTable0x50()
{
// TODO
}
// STUB: LEGO1 0x10082a10
MxBool HistoryBook::VTable0x64()
{
// TODO
return FALSE;
}

View File

@ -2,3 +2,17 @@
// NOTE: This is copied from base class LegoActor. IsleActor may in fact be larger but we don't know yet.
DECOMP_SIZE_ASSERT(IsleActor, 0x78)
// STUB: LEGO1 0x1002c780
MxResult IsleActor::Create(MxDSAction& p_dsAction)
{
// TODO
return SUCCESS;
}
// STUB: LEGO1 0x1002c7b0
MxLong IsleActor::Notify(MxParam& p_param)
{
// TODO
return 0;
}

View File

@ -24,6 +24,13 @@ void IslePathActor::Destroy(MxBool p_fromDestructor)
LegoPathActor::Destroy(FALSE);
}
// STUB: LEGO1 0x1001a2c0
MxLong IslePathActor::Notify(MxParam& p_param)
{
// TODO
return 0;
}
// STUB: LEGO1 0x1001a350
void IslePathActor::VTable0xe0()
{

View File

@ -11,3 +11,10 @@ JukeBoxEntity::~JukeBoxEntity()
{
// TODO
}
// STUB: LEGO1 0x10085e40
MxLong JukeBoxEntity::Notify(MxParam& p_param)
{
// TODO
return 0;
}

View File

@ -20,6 +20,13 @@ Pizza::~Pizza()
TickleManager()->UnregisterClient(this);
}
// STUB: LEGO1 0x10038170
MxResult Pizza::Create(MxDSAction& p_dsAction)
{
// TODO
return SUCCESS;
}
// STUB: LEGO1 0x100388a0
MxResult Pizza::Tickle()
{

View File

@ -119,6 +119,12 @@ void LegoROI::SetDisplayBB(MxS32 p_displayBB)
// Intentionally empty function
}
// FUNCTION: LEGO1 0x100aa340
float LegoROI::IntrinsicImportance() const
{
return .5;
}
// Note: Actually part of parent class (doesn't exist yet)
// STUB: LEGO1 0x100aa350
void LegoROI::UpdateWorldBoundingVolumes()

View File

@ -17,6 +17,7 @@ class LegoROI : public ViewROI {
public:
LegoROI(Tgl::Renderer* p_renderer, ViewLODList* p_lodList, MxTime p_time);
virtual float IntrinsicImportance() const override; // vtable+0x4
// Note: Actually part of parent class (doesn't exist yet)
virtual void UpdateWorldBoundingVolumes() override; // vtable+0x18

View File

@ -10,6 +10,9 @@ class MxMatrix : public Matrix4 {
inline MxMatrix() : Matrix4(m_elements) {}
inline MxMatrix(const MxMatrix& p_matrix) : Matrix4(m_elements) { Equals(p_matrix); }
// FUNCTION: LEGO1 0x10002850
virtual void operator=(const Matrix4& p_matrix) { Equals(p_matrix); } // vtable+0x28
// No idea why there's another equals. Maybe to some other type like the
// DirectX Retained Mode Matrix type which is also a float* alias?
// FUNCTION: LEGO1 0x10002860

View File

@ -112,7 +112,7 @@ Result GroupImpl::RemoveAll()
return Error;
}
// STUB: LEGO1 0x100a34c0
// STUB: LEGO1 0x100a3540
Result GroupImpl::Unknown()
{
return Error;

View File

@ -63,7 +63,6 @@ class RendererImpl : public Renderer {
// vtable+0x20
virtual Unk* CreateUnk() override;
virtual Texture* CreateTexture() override;
virtual Texture* CreateTexture(
int width,
int height,
@ -73,6 +72,8 @@ class RendererImpl : public Renderer {
int paletteEntryCount,
const PaletteEntry* pEntries
) override;
virtual Texture* CreateTexture() override;
virtual Result SetTextureDefaultShadeCount(unsigned long) override;
// vtable+0x30
@ -307,12 +308,12 @@ class GroupImpl : public Group {
virtual Result SetTexture(const Texture*);
virtual Result GetTexture(Texture*&);
virtual Result SetMaterialMode(MaterialMode);
virtual Result Add(const Group*);
virtual Result Add(const Mesh*);
// vtable+0x20
virtual Result Add(const Mesh*);
virtual Result Remove(const Group*);
virtual Result Add(const Group*);
virtual Result Remove(const Mesh*);
virtual Result Remove(const Group*);
virtual Result RemoveAll();
// vtable+0x30

View File

@ -34,7 +34,7 @@ Result RendererImpl::Create()
return (m_data != NULL) ? Success : Error;
}
// FUNCTION: LEGO1 0x100a1894
// FUNCTION: LEGO1 0x100a1830
Device* RendererImpl::CreateDevice(const DeviceDirect3DCreateData& data)
{
DeviceImpl* device = new DeviceImpl();

View File

@ -150,7 +150,7 @@ Result TextureImpl::Changed(int texelsChanged, int paletteChanged)
return ResultVal(m_data->Changed(texelsChanged, paletteChanged));
}
// FUNCTION: LEGO1 0x100a3d00
// FUNCTION: LEGO1 0x100a3cc0
Result TextureImpl::GetBufferAndPalette(
int* width,
int* height,

View File

@ -131,7 +131,6 @@ class Renderer : public Object {
// vtable+0x20
virtual Unk* CreateUnk() = 0;
virtual Texture* CreateTexture() = 0;
virtual Texture* CreateTexture(
int width,
int height,
@ -141,6 +140,7 @@ class Renderer : public Object {
int paletteEntryCount,
const PaletteEntry* pEntries
) = 0;
virtual Texture* CreateTexture() = 0;
virtual Result SetTextureDefaultShadeCount(unsigned long) = 0;
// vtable+0x30
@ -278,10 +278,10 @@ class Group : public Object {
virtual Result SetTexture(const Texture*) = 0;
virtual Result GetTexture(Texture*&) = 0;
virtual Result SetMaterialMode(MaterialMode) = 0;
virtual Result Add(const Group*) = 0;
virtual Result Add(const Mesh*) = 0;
virtual Result Remove(const Group*) = 0;
virtual Result Add(const Group*) = 0;
virtual Result Remove(const Mesh*) = 0;
virtual Result Remove(const Group*) = 0;
virtual Result RemoveAll() = 0;
// This is TransformLocalToWorld in the leak, however it seems

View File

@ -41,6 +41,24 @@ void ViewROI::UpdateWorldData(const MxMatrix& parent2world)
}
}
// STUB: LEGO1 0x100a9fc0
void ViewROI::VTable0x24(const MxMatrix& p_transform)
{
// TODO
}
// STUB: LEGO1 0x100aa0a0
void ViewROI::SetLocalTransform(const Matrix4& p_transform)
{
// TODO
}
// STUB: LEGO1 0x100aa180
void ViewROI::VTable0x1c()
{
// TODO
}
// FUNCTION: LEGO1 0x100aa500
undefined ViewROI::SetUnk101013d8(undefined p_flag)
{

View File

@ -44,9 +44,12 @@ class ViewROI : public OrientableROI {
reinterpret_cast<ViewLODList*>(m_lods)->AddRef();
}
}
virtual float IntrinsicImportance() const;
virtual Tgl::Group* GetGeometry();
virtual const Tgl::Group* GetGeometry() const;
virtual float IntrinsicImportance() const override; // vtable+0x04
virtual void VTable0x1c() override; // vtable+0x1c
virtual void SetLocalTransform(const Matrix4& p_transform) override; // vtable+0x20
virtual void VTable0x24(const MxMatrix& p_transform) override; // vtable+0x24
virtual const Tgl::Group* GetGeometry() const; // vtable+0x34
virtual Tgl::Group* GetGeometry(); // vtable+0x30
static undefined SetUnk101013d8(undefined p_flag);