RendererImpl::CreateMeshBuilder

This commit is contained in:
disinvite 2025-04-18 20:57:19 -04:00
parent f00f793ab5
commit 354dbee70b
2 changed files with 25 additions and 3 deletions

View File

@ -114,6 +114,7 @@ class RendererImpl : public Renderer {
unsigned long height,
ViewImpl& rView
);
inline Result CreateMeshBuilder(MeshBuilderImpl& rMesh);
private:
RendererDataType m_data;
@ -411,10 +412,9 @@ class MeshImpl : public Mesh {
typedef MeshData* MeshDataType;
// FUNCTION: BETA10 0x10170420
const MeshDataType& ImplementationData() const { return m_data; }
// FUNCTION: BETA10 0x10170440
// FUNCTION: BETA10 0x10171b70
MeshDataType& ImplementationData() { return m_data; }
inline void Destroy();
@ -532,7 +532,10 @@ class MeshBuilderImpl : public MeshBuilder {
typedef IDirect3DRMMesh* MeshBuilderDataType;
// FUNCTION: BETA10 0x10170420
const MeshBuilderDataType& ImplementationData() const { return m_data; }
// FUNCTION: BETA10 0x10170440
MeshBuilderDataType& ImplementationData() { return m_data; }
inline void Destroy();

View File

@ -279,14 +279,33 @@ Light* RendererImpl::CreateLight(LightType type, float r, float g, float b)
return pLightImpl;
}
// FUNCTION: BETA10 0x1016d8e0
inline Result RendererCreateMeshBuilder(IDirect3DRM2* pD3DRM, IDirect3DRMMesh*& rpMesh)
{
return ResultVal(pD3DRM->CreateMesh(&rpMesh));
}
// FUNCTION: BETA10 0x1016d850
inline Result RendererImpl::CreateMeshBuilder(MeshBuilderImpl& rMesh)
{
assert(m_data);
assert(!rMesh.ImplementationData());
return RendererCreateMeshBuilder(m_data, rMesh.ImplementationData());
}
// FUNCTION: LEGO1 0x100a1e90
// FUNCTION: BETA10 0x1016abf0
MeshBuilder* RendererImpl::CreateMeshBuilder()
{
assert(m_data);
MeshBuilderImpl* meshBuilder = new MeshBuilderImpl();
if (FAILED(m_data->CreateMesh(&meshBuilder->m_data))) {
if (!CreateMeshBuilder(*static_cast<MeshBuilderImpl*>(meshBuilder))) {
delete meshBuilder;
meshBuilder = NULL;
}
return meshBuilder;
}