mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-28 18:51:16 +00:00
Match LegoAnimPresenter::VTable0x88
This commit is contained in:
parent
e7d341e8bf
commit
e7777ad8de
@ -9,6 +9,7 @@ class LegoMemoryStream;
|
||||
class LegoAnimClass;
|
||||
|
||||
// VTABLE: LEGO1 0x100d90c8
|
||||
// SIZE 0xc0
|
||||
class LegoAnimPresenter : public MxVideoPresenter {
|
||||
public:
|
||||
LegoAnimPresenter();
|
||||
@ -27,15 +28,15 @@ class LegoAnimPresenter : public MxVideoPresenter {
|
||||
return !strcmp(p_name, LegoAnimPresenter::ClassName()) || MxVideoPresenter::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual void ReadyTickle() override; // vtable+0x18
|
||||
virtual void StartingTickle() override; // vtable+0x1c
|
||||
virtual void StreamingTickle() override; // vtable+0x20
|
||||
virtual void ParseExtra() override; // vtable+0x30
|
||||
virtual void Destroy() override; // vtable+0x38
|
||||
virtual MxResult StartAction(MxStreamController*, MxDSAction*) override; // vtable+0x3c
|
||||
virtual void EndAction() override; // vtable+0x40
|
||||
virtual void PutFrame(); // vtable+0x6c
|
||||
virtual MxS32 VTable0x88(MxStreamChunk* p_chunk); // vtable+0x88
|
||||
virtual void ReadyTickle() override; // vtable+0x18
|
||||
virtual void StartingTickle() override; // vtable+0x1c
|
||||
virtual void StreamingTickle() override; // vtable+0x20
|
||||
virtual void ParseExtra() override; // vtable+0x30
|
||||
virtual void Destroy() override; // vtable+0x38
|
||||
virtual MxResult StartAction(MxStreamController* p_controller, MxDSAction* p_action) override; // vtable+0x3c
|
||||
virtual void EndAction() override; // vtable+0x40
|
||||
virtual void PutFrame() override; // vtable+0x6c
|
||||
virtual MxS32 VTable0x88(MxStreamChunk* p_chunk) override; // vtable+0x88
|
||||
|
||||
private:
|
||||
void Init();
|
||||
@ -58,10 +59,10 @@ class LegoAnimPresenter : public MxVideoPresenter {
|
||||
undefined m_unk0x96; // 0x96
|
||||
undefined m_unk0x97; // 0x97
|
||||
undefined4 m_unk0x98; // 0x98
|
||||
MxS16 m_unk0x9c; // 0x9f
|
||||
MxS16 m_unk0x9c; // 0x9c
|
||||
undefined4 m_unk0xa0; // 0xa0
|
||||
undefined4 m_unk0xa4; // 0xa4
|
||||
Mx3DPointFloat m_vec; // 0xa8
|
||||
Mx3DPointFloat m_unk0xa8; // 0xa8
|
||||
undefined4 m_unk0xbc; // 0xbc
|
||||
};
|
||||
|
||||
@ -69,35 +70,37 @@ class LegoAnimPresenter : public MxVideoPresenter {
|
||||
// LegoAnimPresenter::`scalar deleting destructor'
|
||||
|
||||
// VTABLE: LEGO1 0x100db768
|
||||
// SIZE 0x08
|
||||
class LegoAnimClassBase {
|
||||
public:
|
||||
LegoAnimClassBase();
|
||||
virtual ~LegoAnimClassBase();
|
||||
|
||||
virtual void VTable0x4();
|
||||
virtual void VTable0x8();
|
||||
virtual void VTable0xc();
|
||||
virtual void VTable0x4(); // vtable+0x04
|
||||
virtual void VTable0x8(); // vtable+0x08
|
||||
virtual void VTable0xc(); // vtable+0x0c
|
||||
|
||||
undefined4 m_unk0x4;
|
||||
undefined4 m_unk0x4; // 0x04
|
||||
};
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10099de0
|
||||
// LegoAnimClassBase::`scalar deleting destructor'
|
||||
|
||||
// VTABLE: LEGO1 0x100db8d8
|
||||
// SIZE 0x18
|
||||
class LegoAnimClass : public LegoAnimClassBase {
|
||||
public:
|
||||
LegoAnimClass();
|
||||
virtual ~LegoAnimClass() override;
|
||||
|
||||
virtual void VTable0x8() override;
|
||||
virtual void VTable0xc() override;
|
||||
virtual MxResult VTable0x10(LegoMemoryStream* p_stream, MxS32);
|
||||
virtual void VTable0x8() override; // vtable+0x08
|
||||
virtual void VTable0xc() override; // vtable+0x0c
|
||||
virtual MxResult VTable0x10(LegoMemoryStream* p_stream, MxS32); // vtable+0x10
|
||||
|
||||
undefined4 m_unk0x8;
|
||||
undefined4 m_unk0xc;
|
||||
undefined4 m_unk0x10;
|
||||
undefined4 m_unk0x14;
|
||||
undefined4 m_unk0x8; // 0x08
|
||||
undefined4 m_unk0xc; // 0x0c
|
||||
undefined4 m_unk0x10; // 0x10
|
||||
undefined4 m_unk0x14; // 0x14
|
||||
};
|
||||
|
||||
// SYNTHETIC: LEGO1 0x100a0ba0
|
||||
|
||||
@ -7,7 +7,9 @@
|
||||
#include "mxdsanim.h"
|
||||
#include "mxstreamchunk.h"
|
||||
|
||||
DECOMP_SIZE_ASSERT(LegoAnimPresenter, 0xc0);
|
||||
DECOMP_SIZE_ASSERT(LegoAnimPresenter, 0xc0)
|
||||
DECOMP_SIZE_ASSERT(LegoAnimClassBase, 0x08)
|
||||
DECOMP_SIZE_ASSERT(LegoAnimClass, 0x18)
|
||||
|
||||
// FUNCTION: LEGO1 0x10068420
|
||||
LegoAnimPresenter::LegoAnimPresenter()
|
||||
@ -31,7 +33,7 @@ void LegoAnimPresenter::Init()
|
||||
m_unk0x70 = 0;
|
||||
m_unk0x78 = 0;
|
||||
m_unk0x7c = 0;
|
||||
m_vec.Clear();
|
||||
m_unk0xa8.Clear();
|
||||
m_unk0xa4 = 0;
|
||||
m_currentWorld = NULL;
|
||||
m_unk0x95 = 0;
|
||||
@ -58,19 +60,21 @@ MxS32 LegoAnimPresenter::VTable0x88(MxStreamChunk* p_chunk)
|
||||
{
|
||||
MxS32 result = FAILURE;
|
||||
LegoMemoryStream stream((char*) p_chunk->GetData());
|
||||
|
||||
MxS32 magicSig;
|
||||
MxS32 val3;
|
||||
MxS32 val2 = 0;
|
||||
MxS32 val3;
|
||||
|
||||
if (stream.Read(&magicSig, sizeof(MxS32)) == SUCCESS && magicSig == 0x11) {
|
||||
if (stream.Read(&m_unk0xa4, sizeof(MxU32)) == SUCCESS) {
|
||||
if (stream.Read(m_vec.GetX(), sizeof(float)) == SUCCESS) {
|
||||
if (stream.Read(m_vec.GetY(), sizeof(float)) == SUCCESS) {
|
||||
if (stream.Read(m_vec.GetZ(), sizeof(float)) == SUCCESS) {
|
||||
if (stream.Read(&m_unk0xa8[0], sizeof(float)) == SUCCESS) {
|
||||
if (stream.Read(&m_unk0xa8[1], sizeof(float)) == SUCCESS) {
|
||||
if (stream.Read(&m_unk0xa8[2], sizeof(float)) == SUCCESS) {
|
||||
if (stream.Read(&val2, sizeof(MxS32)) == SUCCESS) {
|
||||
if (stream.Read(&val3, sizeof(MxS32)) == SUCCESS) {
|
||||
m_unk0x64 = new LegoAnimClass();
|
||||
if (m_unk0x64) {
|
||||
if (m_unk0x64->VTable0x10(&stream, val3) == SUCCESS) {
|
||||
if (m_unk0x64->VTable0x10(&stream, val2) == SUCCESS) {
|
||||
result = SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
@ -31,10 +31,6 @@ class Mx3DPointFloat : public Vector3 {
|
||||
|
||||
inline void EqualsCross(Mx3DPointFloat& p_a, Mx3DPointFloat& p_b) { EqualsCrossImpl(p_a.m_data, p_b.m_data); }
|
||||
|
||||
inline float* GetX() { return &m_elements[0]; }
|
||||
inline float* GetY() { return &m_elements[1]; }
|
||||
inline float* GetZ() { return &m_elements[2]; }
|
||||
|
||||
private:
|
||||
float m_elements[3];
|
||||
};
|
||||
|
||||
@ -11,6 +11,7 @@ enum LookupMode {
|
||||
LookupMode_LowerCase2 = 3
|
||||
};
|
||||
|
||||
// SIZE 0x04
|
||||
class MxAtomId {
|
||||
public:
|
||||
__declspec(dllexport) MxAtomId(const char*, LookupMode);
|
||||
@ -30,7 +31,7 @@ class MxAtomId {
|
||||
MxAtomIdCounter* GetCounter(const char*, LookupMode);
|
||||
void Destroy();
|
||||
|
||||
const char* m_internal;
|
||||
const char* m_internal; // 0x00
|
||||
};
|
||||
|
||||
#endif // MXATOMID_H
|
||||
|
||||
Loading…
Reference in New Issue
Block a user