some LegoEntityPresenter & LegoWorldPresenter functions (#260)

* LegoEntityPresenter & LegoWorldPresenter

* format fix

* Fixes

* Add size assert

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
This commit is contained in:
Misha 2023-11-02 06:54:08 -04:00 committed by GitHub
parent 176bd1d8fd
commit 24e889ee3d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 86 additions and 14 deletions

View file

@ -1,19 +1,47 @@
#include "legoentitypresenter.h"
#include "legoomni.h"
#include "legovideomanager.h"
DECOMP_SIZE_ASSERT(LegoEntityPresenter, 0x50);
// OFFSET: LEGO1 0x10053440
LegoEntityPresenter::LegoEntityPresenter()
{
Init();
}
// OFFSET: LEGO1 0x100535d0 STUB
LegoEntityPresenter::~LegoEntityPresenter()
{
// TODO
}
// OFFSET: LEGO1 0x100535c0 STUB
// OFFSET: LEGO1 0x100535c0
void LegoEntityPresenter::Init()
{
// TODO
m_unk4c = 0;
}
// OFFSET: LEGO1 0x100535d0
LegoEntityPresenter::~LegoEntityPresenter()
{
Destroy(TRUE);
}
// OFFSET: LEGO1 0x10053630
undefined4 LegoEntityPresenter::vtable6c(undefined4 p_unknown)
{
m_unk4c = p_unknown;
return 0;
}
// OFFSET: LEGO1 0x10053640
void LegoEntityPresenter::Destroy(MxBool p_fromDestructor)
{
if (VideoManager()) {
VideoManager()->RemovePresenter(*this);
}
Init();
}
// OFFSET: LEGO1 0x10053670
void LegoEntityPresenter::Destroy()
{
Destroy(FALSE);
}

View file

@ -4,6 +4,7 @@
#include "mxcompositepresenter.h"
// VTABLE 0x100d8398
// SIZE 0x50
class LegoEntityPresenter : public MxCompositePresenter {
public:
LegoEntityPresenter();
@ -22,8 +23,14 @@ public:
return !strcmp(name, LegoEntityPresenter::ClassName()) || MxCompositePresenter::IsA(name);
}
virtual void Destroy() override; // vtable+0x38
virtual void Init(); // vtable+0x68
virtual undefined4 vtable6c(undefined4 p_unknown); // vtable+0x6c
private:
void Init();
void Destroy(MxBool p_fromDestructor);
undefined4 m_unk4c;
};
#endif // LEGOENTITYPRESENTER_H

View file

@ -1,9 +1,12 @@
#include "legoworldpresenter.h"
// OFFSET: LEGO1 0x100665c0 STUB
// 0x100f75d4
undefined4 g_LegoWorldPresenterQuality = 1;
// OFFSET: LEGO1 0x100665c0
LegoWorldPresenter::LegoWorldPresenter()
{
// TODO
m_unk50 = 50000;
}
// OFFSET: LEGO1 0x10066770 STUB
@ -12,8 +15,8 @@ LegoWorldPresenter::~LegoWorldPresenter()
// TODO
}
// OFFSET: LEGO1 0x100665b0 STUB
void LegoWorldPresenter::configureLegoWorldPresenter(int param_1)
// OFFSET: LEGO1 0x100665b0
void LegoWorldPresenter::configureLegoWorldPresenter(int p_quality)
{
// TODO
g_LegoWorldPresenterQuality = p_quality;
}

View file

@ -24,6 +24,9 @@ public:
{
return !strcmp(name, LegoWorldPresenter::ClassName()) || LegoEntityPresenter::IsA(name);
}
private:
undefined4 m_unk50;
};
#endif // LEGOWORLDPRESENTER_H

View file

@ -16,3 +16,27 @@ MxCompositePresenter::~MxCompositePresenter()
{
NotificationManager()->Unregister(this);
}
// OFFSET: LEGO1 0x100b67f0 STUB
void MxCompositePresenter::VTable0x58()
{
// TODO
}
// OFFSET: LEGO1 0x100b69b0 STUB
void MxCompositePresenter::VTable0x5c()
{
// TODO
}
// OFFSET: LEGO1 0x100b6b40 STUB
void MxCompositePresenter::VTable0x60()
{
// TODO
}
// OFFSET: LEGO1 0x1000caf0 STUB
void MxCompositePresenter::VTable0x64()
{
// TODO
}

View file

@ -24,6 +24,12 @@ public:
return !strcmp(name, MxCompositePresenter::ClassName()) || MxPresenter::IsA(name);
}
virtual void VTable0x58();
virtual void VTable0x5c();
virtual void VTable0x60();
virtual void VTable0x64();
private:
MxUnkList m_list;
};

View file

@ -11,6 +11,7 @@
class MxStreamController;
// VTABLE 0x100d4d38
// SIZE 0x40
class MxPresenter : public MxCore {
public:
enum TickleState {