Implement LegoLOD::Read and related (#634)

* WIP

* Fix

* Remove bogus

* Fix

* Match

* Fix

* Remove TODO
This commit is contained in:
Christian Semmler
2024-03-07 14:57:17 -05:00
committed by GitHub
parent a12146f52f
commit 53e2353f78
16 changed files with 652 additions and 126 deletions

View File

@@ -94,11 +94,11 @@ Result GroupImpl::Add(const Mesh* pMesh)
}
// FUNCTION: LEGO1 0x100a3450
Result GroupImpl::Remove(const Mesh* pMesh)
Result GroupImpl::Remove(const Unk* pUnk)
{
const MeshImpl* pMeshImpl = static_cast<const MeshImpl*>(pMesh);
const UnkImpl* pUnkImpl = static_cast<const UnkImpl*>(pUnk);
// TODO: Incorrect structure
return ResultVal(m_data->DeleteVisual((IDirect3DRMMesh*) pMeshImpl->ImplementationData()));
return ResultVal(m_data->DeleteVisual((IDirect3DRMMesh*) pUnkImpl->ImplementationData()));
}
// FUNCTION: LEGO1 0x100a3480

View File

@@ -282,7 +282,7 @@ public:
struct MeshData {
IDirect3DRMMesh* groupMesh;
int groupIndex;
D3DRMGROUPINDEX groupIndex;
};
inline MeshData* ImplementationData() const { return m_data; }
@@ -320,7 +320,7 @@ public:
// vtable+0x20
Result Add(const Mesh*) override;
Result Remove(const Group*) override;
Result Remove(const Mesh*) override;
Result Remove(const Unk*) override;
Result RemoveAll() override;
// vtable+0x30
@@ -349,14 +349,15 @@ public:
void* ImplementationDataPtr() override;
// vtable+0x08
Result SetMeshData(
Tgl::Mesh* CreateMesh(
unsigned long faceCount,
unsigned long vertexCount,
const float (*pPositions)[3],
const float (*pNormals)[3],
const float (*pTextureCoordinates)[2],
unsigned long vertexPerFaceCount,
unsigned long* pFaceData
float (*pPositions)[3],
float (*pNormals)[3],
float (*pTextureCoordinates)[2],
unsigned long (*pFaceIndices)[3],
unsigned long (*pTextureIndices)[3],
Tgl::ShadingModel shadingModel
) override;
Result GetBoundingBox(float min[3], float max[3]) override;

View File

@@ -12,17 +12,18 @@ void* UnkImpl::ImplementationDataPtr()
}
// STUB: LEGO1 0x100a3840
Result UnkImpl::SetMeshData(
Tgl::Mesh* UnkImpl::CreateMesh(
unsigned long faceCount,
unsigned long vertexCount,
const float (*pPositions)[3],
const float (*pNormals)[3],
const float (*pTextureCoordinates)[2],
unsigned long vertexPerFaceCount,
unsigned long* pFaceData
float (*pPositions)[3],
float (*pNormals)[3],
float (*pTextureCoordinates)[2],
unsigned long (*pFaceIndices)[3],
unsigned long (*pTextureIndices)[3],
Tgl::ShadingModel shadingModel
)
{
return Error;
return NULL;
}
// FUNCTION: LEGO1 0x100a3ae0