Implement LegoTexturePresenter::Read and Store (#641)

* LegoTexturePresenter::Read

* Implement LegoTexturePresenter::Store

* Rename

* Fix naming
This commit is contained in:
Christian Semmler 2024-03-09 10:49:13 -05:00 committed by GitHub
parent fb800db862
commit 9e2f37e7ca
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 281 additions and 85 deletions

View file

@ -1,8 +1,8 @@
#ifndef ACT1STATE_H #ifndef ACT1STATE_H
#define ACT1STATE_H #define ACT1STATE_H
#include "legonamedtexture.h"
#include "legostate.h" #include "legostate.h"
#include "legoutil.h"
#include "roi/legoroi.h" #include "roi/legoroi.h"
// VTABLE: LEGO1 0x100d7028 // VTABLE: LEGO1 0x100d7028
@ -101,21 +101,21 @@ class Act1State : public LegoState {
NamedPlane m_unk0x070; // 0x070 NamedPlane m_unk0x070; // 0x070
NamedPlane m_unk0x0bc; // 0x0bc NamedPlane m_unk0x0bc; // 0x0bc
NamedPlane m_unk0x108; // 0x108 NamedPlane m_unk0x108; // 0x108
NamedTexture* m_unk0x154; // 0x154 LegoNamedTexture* m_unk0x154; // 0x154
NamedTexture* m_unk0x158; // 0x158 LegoNamedTexture* m_unk0x158; // 0x158
NamedTexture* m_unk0x15c; // 0x15c LegoNamedTexture* m_unk0x15c; // 0x15c
MxCore* m_unk0x160; // 0x160 MxCore* m_unk0x160; // 0x160
NamedPlane m_unk0x164; // 0x164 NamedPlane m_unk0x164; // 0x164
NamedTexture* m_unk0x1b0; // 0x1b0 LegoNamedTexture* m_unk0x1b0; // 0x1b0
NamedTexture* m_unk0x1b4; // 0x1b4 LegoNamedTexture* m_unk0x1b4; // 0x1b4
MxCore* m_unk0x1b8; // 0x1b8 MxCore* m_unk0x1b8; // 0x1b8
NamedPlane m_unk0x1bc; // 0x1bc NamedPlane m_unk0x1bc; // 0x1bc
NamedTexture* m_unk0x208; // 0x208 LegoNamedTexture* m_unk0x208; // 0x208
MxCore* m_unk0x20c; // 0x20c MxCore* m_unk0x20c; // 0x20c
NamedPlane m_unk0x210; // 0x210 NamedPlane m_unk0x210; // 0x210
NamedTexture* m_unk0x25c; // 0x25c LegoNamedTexture* m_unk0x25c; // 0x25c
NamedTexture* m_unk0x260; // 0x260 LegoNamedTexture* m_unk0x260; // 0x260
NamedTexture* m_unk0x264; // 0x264 LegoNamedTexture* m_unk0x264; // 0x264
MxCore* m_unk0x268; // 0x268 MxCore* m_unk0x268; // 0x268
}; };

View file

@ -0,0 +1,27 @@
#ifndef LEGONAMEDTEXTURE_H
#define LEGONAMEDTEXTURE_H
#include "misc/legotexture.h"
#include "mxstring.h"
// SIZE 0x14
class LegoNamedTexture {
public:
LegoNamedTexture(const char* p_name, LegoTexture* p_texture)
{
m_name = p_name;
m_texture = p_texture;
}
~LegoNamedTexture() { delete m_texture; }
// FUNCTION: LEGO1 0x1003f920
const MxString* GetName() const { return &m_name; }
LegoTexture* GetTexture() { return m_texture; }
private:
MxString m_name; // 0x00
LegoTexture* m_texture; // 0x04
};
#endif // LEGONAMEDTEXTURE_H

View file

@ -0,0 +1,84 @@
#ifndef LEGONAMEDTEXTURELIST_H
#define LEGONAMEDTEXTURELIST_H
#include "legonamedtexture.h"
#include "mxlist.h"
// VTABLE: LEGO1 0x100d8110
// class MxCollection<LegoNamedTexture *>
// VTABLE: LEGO1 0x100d8128
// class MxList<LegoNamedTexture *>
// VTABLE: LEGO1 0x100d8140
// class MxPtrList<LegoNamedTexture>
// VTABLE: LEGO1 0x100d8158
// SIZE 0x18
class LegoNamedTextureList : public MxPtrList<LegoNamedTexture> {
public:
LegoNamedTextureList() : MxPtrList<LegoNamedTexture>(TRUE) {}
// SYNTHETIC: LEGO1 0x1004f040
// LegoNamedTextureList::`scalar deleting destructor'
};
// VTABLE: LEGO1 0x100d8170
// class MxListCursor<LegoNamedTexture *>
// VTABLE: LEGO1 0x100d8188
// class MxPtrListCursor<LegoNamedTexture>
// VTABLE: LEGO1 0x100d81a0
// SIZE 0x10
class LegoNamedTextureListCursor : public MxPtrListCursor<LegoNamedTexture> {
public:
LegoNamedTextureListCursor(LegoNamedTextureList* p_list) : MxPtrListCursor<LegoNamedTexture>(p_list) {}
};
// SYNTHETIC: LEGO1 0x1004f500
// LegoNamedTextureListCursor::`scalar deleting destructor'
// FUNCTION: LEGO1 0x1004f570
// MxPtrListCursor<LegoNamedTexture>::~MxPtrListCursor<LegoNamedTexture>
// SYNTHETIC: LEGO1 0x1004f5c0
// MxListCursor<LegoNamedTexture *>::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x1004f630
// MxPtrListCursor<LegoNamedTexture>::`scalar deleting destructor'
// FUNCTION: LEGO1 0x1004f6a0
// MxListCursor<LegoNamedTexture *>::~MxListCursor<LegoNamedTexture *>
// FUNCTION: LEGO1 0x1004f6f0
// LegoNamedTextureListCursor::~LegoNamedTextureListCursor
// TEMPLATE: LEGO1 0x1004eec0
// MxCollection<LegoNamedTexture *>::Compare
// TEMPLATE: LEGO1 0x1004eed0
// MxCollection<LegoNamedTexture *>::~MxCollection<LegoNamedTexture *>
// TEMPLATE: LEGO1 0x1004ef20
// MxCollection<LegoNamedTexture *>::Destroy
// TEMPLATE: LEGO1 0x1004ef30
// MxList<LegoNamedTexture *>::~MxList<LegoNamedTexture *>
// TEMPLATE: LEGO1 0x1004efc0
// MxPtrList<LegoNamedTexture>::Destroy
// TEMPLATE: LEGO1 0x1004f0b0
// MxPtrList<LegoNamedTexture>::~MxPtrList<LegoNamedTexture>
// SYNTHETIC: LEGO1 0x1004f100
// MxCollection<LegoNamedTexture *>::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x1004f170
// MxList<LegoNamedTexture *>::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x1004f220
// MxPtrList<LegoNamedTexture>::`scalar deleting destructor'
#endif // LEGONAMEDTEXTURELIST_H

View file

@ -1,19 +1,26 @@
#ifndef LEGOTEXTUREINFO_H #ifndef LEGOTEXTUREINFO_H
#define LEGOTEXTUREINFO_H #define LEGOTEXTUREINFO_H
#include "misc/legotypes.h"
#include "tgl/tgl.h"
#include <d3drmobj.h> #include <d3drmobj.h>
#include <ddraw.h> #include <ddraw.h>
class LegoTexture; class LegoTexture;
// SIZE 0x10 // SIZE 0x10
struct LegoTextureInfo { class LegoTextureInfo {
public: public:
LegoTextureInfo(); LegoTextureInfo();
~LegoTextureInfo(); ~LegoTextureInfo();
static LegoTextureInfo* Create(const char* p_name, LegoTexture* p_texture); static LegoTextureInfo* Create(const char* p_name, LegoTexture* p_texture);
static BOOL SetGroupTexture(Tgl::Mesh* pMesh, LegoTextureInfo* p_textureInfo);
LegoResult FUN_10066010(LegoU8* p_bits);
// private:
char* m_name; // 0x00 char* m_name; // 0x00
LPDIRECTDRAWSURFACE m_surface; // 0x04 LPDIRECTDRAWSURFACE m_surface; // 0x04
LPDIRECTDRAWPALETTE m_palette; // 0x08 LPDIRECTDRAWPALETTE m_palette; // 0x08

View file

@ -1,13 +1,14 @@
#ifndef LEGOTEXTUREPRESENTER_H #ifndef LEGOTEXTUREPRESENTER_H
#define LEGOTEXTUREPRESENTER_H #define LEGOTEXTUREPRESENTER_H
#include "legonamedtexturelist.h"
#include "mxmediapresenter.h" #include "mxmediapresenter.h"
// VTABLE: LEGO1 0x100d4d90 // VTABLE: LEGO1 0x100d4d90
// SIZE 0x54 (from inlined construction at 0x10009bb5) // SIZE 0x54 (from inlined construction at 0x10009bb5)
class LegoTexturePresenter : public MxMediaPresenter { class LegoTexturePresenter : public MxMediaPresenter {
public: public:
LegoTexturePresenter() : m_textureData(NULL) {} LegoTexturePresenter() : m_textures(NULL) {}
~LegoTexturePresenter() override; ~LegoTexturePresenter() override;
// FUNCTION: LEGO1 0x1000ce50 // FUNCTION: LEGO1 0x1000ce50
@ -31,10 +32,10 @@ class LegoTexturePresenter : public MxMediaPresenter {
// LegoTexturePresenter::`scalar deleting destructor' // LegoTexturePresenter::`scalar deleting destructor'
MxResult Read(MxDSChunk& p_chunk); MxResult Read(MxDSChunk& p_chunk);
void FUN_1004f290(); MxResult Store();
private: private:
MxDSChunk* m_textureData; // 0x54 LegoNamedTextureList* m_textures; // 0x50
}; };
#endif // LEGOTEXTUREPRESENTER_H #endif // LEGOTEXTUREPRESENTER_H

View file

@ -13,23 +13,7 @@
class MxAtomId; class MxAtomId;
class LegoEntity; class LegoEntity;
class LegoAnimPresenter; class LegoAnimPresenter;
class LegoNamedTexture;
class LegoTexture;
// SIZE 0x14
class NamedTexture {
public:
~NamedTexture() { delete m_texture; }
// FUNCTION: LEGO1 0x1003f920
const MxString* GetName() const { return &m_name; }
LegoTexture* GetTexture() { return m_texture; }
private:
MxString m_name; // 0x00
LegoTexture* m_texture; // 0x04
};
void FUN_1003e050(LegoAnimPresenter* p_presenter); void FUN_1003e050(LegoAnimPresenter* p_presenter);
Extra::ActionType MatchActionString(const char*); Extra::ActionType MatchActionString(const char*);
@ -42,9 +26,9 @@ void SetAppCursor(WPARAM p_wparam);
MxBool FUN_1003ef60(); MxBool FUN_1003ef60();
MxBool RemoveFromWorld(MxAtomId& p_atomId1, MxS32 p_id1, MxAtomId& p_atomId2, MxS32 p_id2); MxBool RemoveFromWorld(MxAtomId& p_atomId1, MxS32 p_id1, MxAtomId& p_atomId2, MxS32 p_id2);
void SetLightPosition(MxU32); void SetLightPosition(MxU32);
NamedTexture* ReadNamedTexture(LegoFile* p_file); LegoNamedTexture* ReadNamedTexture(LegoFile* p_file);
void FUN_1003f540(LegoFile* p_file, const char* p_filename); void FUN_1003f540(LegoFile* p_file, const char* p_filename);
void WriteNamedTexture(LegoFile* p_file, NamedTexture* p_texture); void WriteNamedTexture(LegoFile* p_file, LegoNamedTexture* p_texture);
// SYNTHETIC: LEGO1 0x10034b40 // SYNTHETIC: LEGO1 0x10034b40
// LegoTexture::`scalar deleting destructor' // LegoTexture::`scalar deleting destructor'

View file

@ -1,5 +1,7 @@
#include "act1state.h" #include "act1state.h"
#include "legoutil.h"
DECOMP_SIZE_ASSERT(Act1State, 0x26c) DECOMP_SIZE_ASSERT(Act1State, 0x26c)
DECOMP_SIZE_ASSERT(Act1State::NamedPlane, 0x4c) DECOMP_SIZE_ASSERT(Act1State::NamedPlane, 0x4c)

View file

@ -151,3 +151,18 @@ LegoTextureInfo* LegoTextureInfo::Create(const char* p_name, LegoTexture* p_text
return NULL; return NULL;
} }
// STUB: LEGO1 0x10065f60
BOOL LegoTextureInfo::SetGroupTexture(Tgl::Mesh* pMesh, LegoTextureInfo* p_textureInfo)
{
TglImpl::MeshImpl::MeshData* data = ((TglImpl::MeshImpl*) pMesh)->ImplementationData();
data->groupMesh->SetGroupTexture(data->groupIndex, p_textureInfo->m_texture);
return TRUE;
}
// STUB: LEGO1 0x10066010
LegoResult LegoTextureInfo::FUN_10066010(LegoU8* p_bits)
{
// TODO
return SUCCESS;
}

View file

@ -1,6 +1,7 @@
#include "legoutil.h" #include "legoutil.h"
#include "legoinputmanager.h" #include "legoinputmanager.h"
#include "legonamedtexture.h"
#include "legoomni.h" #include "legoomni.h"
#include "legoworld.h" #include "legoworld.h"
#include "legoworldlist.h" #include "legoworldlist.h"
@ -13,8 +14,6 @@
#include <process.h> #include <process.h>
#include <string.h> #include <string.h>
DECOMP_SIZE_ASSERT(NamedTexture, 0x14)
// STUB: LEGO1 0x1003e050 // STUB: LEGO1 0x1003e050
void FUN_1003e050(LegoAnimPresenter* p_presenter) void FUN_1003e050(LegoAnimPresenter* p_presenter)
{ {
@ -297,7 +296,7 @@ void SetLightPosition(MxU32)
} }
// STUB: LEGO1 0x1003f3b0 // STUB: LEGO1 0x1003f3b0
NamedTexture* ReadNamedTexture(LegoFile* p_file) LegoNamedTexture* ReadNamedTexture(LegoFile* p_file)
{ {
return NULL; return NULL;
} }
@ -308,7 +307,7 @@ void FUN_1003f540(LegoFile* p_file, const char* p_filename)
} }
// FUNCTION: LEGO1 0x1003f8a0 // FUNCTION: LEGO1 0x1003f8a0
void WriteNamedTexture(LegoFile* p_file, NamedTexture* p_texture) void WriteNamedTexture(LegoFile* p_file, LegoNamedTexture* p_texture)
{ {
p_file->FUN_10006030(*p_texture->GetName()); p_file->FUN_10006030(*p_texture->GetName());
p_texture->GetTexture()->Write(p_file); p_texture->GetTexture()->Write(p_file);

View file

@ -227,7 +227,7 @@ MxResult LegoWorldPresenter::LoadWorld(char* p_worldName, LegoWorld* p_world)
LegoTexturePresenter texturePresenter; LegoTexturePresenter texturePresenter;
if (texturePresenter.Read(chunk) == SUCCESS) { if (texturePresenter.Read(chunk) == SUCCESS) {
texturePresenter.FUN_1004f290(); texturePresenter.Store();
} }
delete[] buff; delete[] buff;

View file

@ -2,9 +2,14 @@
#include "legoomni.h" #include "legoomni.h"
#include "legovideomanager.h" #include "legovideomanager.h"
#include "misc/legocontainer.h"
#include "misc/legoimage.h"
#include "misc/legostorage.h"
#include "mxcompositepresenter.h" #include "mxcompositepresenter.h"
DECOMP_SIZE_ASSERT(LegoTexturePresenter, 0x54) DECOMP_SIZE_ASSERT(LegoTexturePresenter, 0x54)
DECOMP_SIZE_ASSERT(LegoNamedTexture, 0x14)
DECOMP_SIZE_ASSERT(LegoNamedTextureList, 0x18)
// FUNCTION: LEGO1 0x1004eb40 // FUNCTION: LEGO1 0x1004eb40
LegoTexturePresenter::~LegoTexturePresenter() LegoTexturePresenter::~LegoTexturePresenter()
@ -19,17 +24,93 @@ MxResult LegoTexturePresenter::AddToManager()
return SUCCESS; return SUCCESS;
} }
// STUB: LEGO1 0x1004ebd0 // FUNCTION: LEGO1 0x1004ebd0
MxResult LegoTexturePresenter::Read(MxDSChunk& p_chunk) MxResult LegoTexturePresenter::Read(MxDSChunk& p_chunk)
{ {
// TODO MxResult result = FAILURE;
return SUCCESS; LegoMemory storage(p_chunk.GetData());
LegoChar* textureName = NULL;
LegoS32 hardwareMode = VideoManager()->GetDirect3D()->AssignedDevice()->GetHardwareMode();
m_textures = new LegoNamedTextureList();
LegoU32 numTextures, i;
if (storage.Read(&numTextures, sizeof(numTextures)) != SUCCESS) {
goto done;
}
for (i = 0; i < numTextures; i++) {
LegoU32 textureNameLength;
LegoTexture* texture;
LegoNamedTexture* namedTexture;
if (storage.Read(&textureNameLength, sizeof(textureNameLength)) != SUCCESS) {
goto done;
}
textureName = new LegoChar[textureNameLength + 1];
if (storage.Read(textureName, textureNameLength) != SUCCESS) {
goto done;
}
textureName[textureNameLength] = '\0';
strlwr(textureName);
texture = new LegoTexture();
if (texture->Read(&storage, hardwareMode) != SUCCESS) {
goto done;
}
namedTexture = new LegoNamedTexture(textureName, texture);
m_textures->Append(namedTexture);
delete[] textureName;
textureName = NULL;
}
result = SUCCESS;
done:
if (textureName != NULL) {
delete[] textureName;
}
if (result != SUCCESS && m_textures != NULL) {
delete m_textures;
m_textures = NULL;
}
return result;
} }
// STUB: LEGO1 0x1004f290 // FUNCTION: LEGO1 0x1004f290
void LegoTexturePresenter::FUN_1004f290() MxResult LegoTexturePresenter::Store()
{ {
// TODO LegoNamedTextureListCursor cursor(m_textures);
LegoNamedTexture* namedTexture;
VideoManager();
while (cursor.Next(namedTexture)) {
LegoTexture* texture = namedTexture->GetTexture();
LegoTextureInfo* textureInfo = TextureContainer()->Get(namedTexture->GetName()->GetData());
if (textureInfo == NULL) {
textureInfo = LegoTextureInfo::Create(namedTexture->GetName()->GetData(), texture);
if (textureInfo != NULL) {
TextureContainer()->Add(namedTexture->GetName()->GetData(), textureInfo);
}
}
else {
textureInfo->FUN_10066010(texture->GetImage()->GetBits());
}
}
if (m_textures != NULL) {
delete m_textures;
}
m_textures = NULL;
return SUCCESS;
} }
// STUB: LEGO1 0x1004fc60 // STUB: LEGO1 0x1004fc60

View file

@ -122,6 +122,12 @@ class LegoTextureContainer : public LegoContainer<LegoTextureInfo> {
// TEMPLATE: LEGO1 0x10001cc0 // TEMPLATE: LEGO1 0x10001cc0
// _Tree<char const *,pair<char const * const,LegoTextureInfo *>,map<char const *,LegoTextureInfo *,LegoContainerInfoComparator,allocator<LegoTextureInfo *> >::_Kfn,LegoContainerInfoComparator,allocator<LegoTextureInfo *> >::_Lbound // _Tree<char const *,pair<char const * const,LegoTextureInfo *>,map<char const *,LegoTextureInfo *,LegoContainerInfoComparator,allocator<LegoTextureInfo *> >::_Kfn,LegoContainerInfoComparator,allocator<LegoTextureInfo *> >::_Lbound
// TEMPLATE: LEGO1 0x1004f740
// _Tree<char const *,pair<char const * const,LegoTextureInfo *>,map<char const *,LegoTextureInfo *,LegoContainerInfoComparator,allocator<LegoTextureInfo *> >::_Kfn,LegoContainerInfoComparator,allocator<LegoTextureInfo *> >::find
// TEMPLATE: LEGO1 0x1004f800
// map<char const *,LegoTextureInfo *,LegoContainerInfoComparator,allocator<LegoTextureInfo *> >::insert
// TEMPLATE: LEGO1 0x1004f960 // TEMPLATE: LEGO1 0x1004f960
// _Tree<char const *,pair<char const * const,LegoTextureInfo *>,map<char const *,LegoTextureInfo *,LegoContainerInfoComparator,allocator<LegoTextureInfo *> >::_Kfn,LegoContainerInfoComparator,allocator<LegoTextureInfo *> >::iterator::_Dec // _Tree<char const *,pair<char const * const,LegoTextureInfo *>,map<char const *,LegoTextureInfo *,LegoContainerInfoComparator,allocator<LegoTextureInfo *> >::_Kfn,LegoContainerInfoComparator,allocator<LegoTextureInfo *> >::iterator::_Dec

View file

@ -21,15 +21,6 @@ const char* g_unk0x101013dc = "inh";
inline IDirect3DRM2* GetD3DRM(Tgl::Renderer* pRenderer); inline IDirect3DRM2* GetD3DRM(Tgl::Renderer* pRenderer);
inline BOOL GetMeshData(IDirect3DRMMesh*& mesh, D3DRMGROUPINDEX& index, Tgl::Mesh* pMesh); inline BOOL GetMeshData(IDirect3DRMMesh*& mesh, D3DRMGROUPINDEX& index, Tgl::Mesh* pMesh);
// TODO: Find out which unit this belongs to
// STUB: LEGO1 0x10065f60
BOOL SetGroupTexture(Tgl::Mesh* pMesh, LegoTextureInfo* p_textureInfo)
{
TglImpl::MeshImpl::MeshData* data = ((TglImpl::MeshImpl*) pMesh)->ImplementationData();
data->groupMesh->SetGroupTexture(data->groupIndex, p_textureInfo->m_texture);
return TRUE;
}
// FUNCTION: LEGO1 0x100aa380 // FUNCTION: LEGO1 0x100aa380
LegoLOD::LegoLOD(Tgl::Renderer* p_renderer) : ViewLOD(p_renderer) LegoLOD::LegoLOD(Tgl::Renderer* p_renderer) : ViewLOD(p_renderer)
{ {
@ -231,7 +222,7 @@ LegoResult LegoLOD::Read(Tgl::Renderer* p_renderer, LegoTextureContainer* p_text
} }
m_meshes[meshIndex].m_tglMesh->SetColor(1.0F, 1.0F, 1.0F, 0.0F); m_meshes[meshIndex].m_tglMesh->SetColor(1.0F, 1.0F, 1.0F, 0.0F);
SetGroupTexture(m_meshes[meshIndex].m_tglMesh, textureInfo); LegoTextureInfo::SetGroupTexture(m_meshes[meshIndex].m_tglMesh, textureInfo);
m_meshes[meshIndex].m_unk0x04 = TRUE; m_meshes[meshIndex].m_unk0x04 = TRUE;
} }
else { else {
@ -328,7 +319,7 @@ LegoResult LegoLOD::FUN_100aad00(LegoTextureInfo* p_textureInfo)
{ {
for (LegoU32 i = m_unk0x1c; i < m_numMeshes; i++) { for (LegoU32 i = m_unk0x1c; i < m_numMeshes; i++) {
if (m_meshes[i].m_unk0x04) { if (m_meshes[i].m_unk0x04) {
SetGroupTexture(m_meshes[i].m_tglMesh, p_textureInfo); LegoTextureInfo::SetGroupTexture(m_meshes[i].m_tglMesh, p_textureInfo);
m_meshes[i].m_tglMesh->SetColor(1.0F, 1.0F, 1.0F, 0.0F); m_meshes[i].m_tglMesh->SetColor(1.0F, 1.0F, 1.0F, 0.0F);
m_meshes[i].m_unk0x04 = TRUE; m_meshes[i].m_unk0x04 = TRUE;
} }

View file

@ -5,7 +5,7 @@
#include "viewmanager/viewlod.h" #include "viewmanager/viewlod.h"
class LegoTextureContainer; class LegoTextureContainer;
struct LegoTextureInfo; class LegoTextureInfo;
class LegoStorage; class LegoStorage;
// VTABLE: LEGO1 0x100dbf10 // VTABLE: LEGO1 0x100dbf10

View file

@ -8,7 +8,7 @@ typedef unsigned char (*ROIHandler)(const char*, char*, unsigned int);
class LegoEntity; class LegoEntity;
class LegoTextureContainer; class LegoTextureContainer;
struct LegoTextureInfo; class LegoTextureInfo;
class LegoStorage; class LegoStorage;
class LegoAnim; class LegoAnim;
class LegoAnimNodeData; class LegoAnimNodeData;

View file

@ -42,6 +42,9 @@ class MxMediaPresenter : public MxPresenter {
void Enable(MxBool p_enable) override; // vtable+0x54 void Enable(MxBool p_enable) override; // vtable+0x54
virtual void LoopChunk(MxStreamChunk* p_chunk); // vtable+0x58 virtual void LoopChunk(MxStreamChunk* p_chunk); // vtable+0x58
MxStreamChunk* CurrentChunk();
MxStreamChunk* NextChunk();
// SYNTHETIC: LEGO1 0x1000c680 // SYNTHETIC: LEGO1 0x1000c680
// MxMediaPresenter::`scalar deleting destructor' // MxMediaPresenter::`scalar deleting destructor'
@ -53,10 +56,6 @@ class MxMediaPresenter : public MxPresenter {
void Init(); void Init();
void Destroy(MxBool p_fromDestructor); void Destroy(MxBool p_fromDestructor);
public:
MxStreamChunk* CurrentChunk();
MxStreamChunk* NextChunk();
}; };
// SYNTHETIC: LEGO1 0x100b46e0 // SYNTHETIC: LEGO1 0x100b46e0