mirror of
https://github.com/isledecomp/isle.git
synced 2025-10-23 16:34:06 +00:00
Implement/match Lego3DView and parent classes (#412)
* Implement/match TglSurface * Implement/match LegoView/1 * Lego3DView * Fixes * Lego3DManager * Remove garbage * Remove garbage * Use shorthand calls
This commit is contained in:

committed by
GitHub

parent
dc3500f631
commit
8db36722d8
96
LEGO1/3dmanager/lego3dmanager.cpp
Normal file
96
LEGO1/3dmanager/lego3dmanager.cpp
Normal file
@@ -0,0 +1,96 @@
|
||||
// Lego3DManager.cpp : implementation file
|
||||
//
|
||||
#include "lego3dmanager.h"
|
||||
|
||||
#include "../viewmanager/viewlodlist.h"
|
||||
#include "decomp.h"
|
||||
|
||||
DECOMP_SIZE_ASSERT(Lego3DManager, 0x10);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// FUNCTION: LEGO1 0x100ab2d0
|
||||
BOOL InitializeCreateStruct(
|
||||
TglSurface::CreateStruct& rTglSurfaceCreateStruct,
|
||||
const Lego3DManager::CreateStruct& rCreateStruct
|
||||
)
|
||||
{
|
||||
// initializes a TglSurface::CreateStruct from a Lego3DManager::CreateStruct
|
||||
rTglSurfaceCreateStruct.m_pDriverGUID = rCreateStruct.m_pDriverGUID;
|
||||
rTglSurfaceCreateStruct.m_hWnd = rCreateStruct.m_hWnd;
|
||||
rTglSurfaceCreateStruct.m_pDirectDraw = rCreateStruct.m_pDirectDraw;
|
||||
rTglSurfaceCreateStruct.m_pFrontBuffer = rCreateStruct.m_pFrontBuffer;
|
||||
rTglSurfaceCreateStruct.m_pBackBuffer = rCreateStruct.m_pBackBuffer;
|
||||
rTglSurfaceCreateStruct.m_pPalette = rCreateStruct.m_pPalette;
|
||||
rTglSurfaceCreateStruct.m_isFullScreen = rCreateStruct.m_isFullScreen;
|
||||
rTglSurfaceCreateStruct.m_isWideViewAngle = rCreateStruct.m_isWideViewAngle;
|
||||
rTglSurfaceCreateStruct.m_direct3d = rCreateStruct.m_direct3d;
|
||||
rTglSurfaceCreateStruct.m_d3dDevice = rCreateStruct.m_d3dDevice;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// FUNCTION: LEGO1 0x100ab320
|
||||
Lego3DManager::Lego3DManager()
|
||||
{
|
||||
// Tgl things
|
||||
m_pRenderer = 0;
|
||||
|
||||
m_pLego3DView = 0;
|
||||
m_pViewLODListManager = 0;
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100ab360
|
||||
Lego3DManager::~Lego3DManager()
|
||||
{
|
||||
Destroy();
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100ab370
|
||||
BOOL Lego3DManager::Create(CreateStruct& rCreateStruct)
|
||||
{
|
||||
TglSurface::CreateStruct tglSurfaceCreateStruct;
|
||||
BOOL result;
|
||||
|
||||
assert(!m_pViewLODListManager);
|
||||
assert(!m_pRenderer);
|
||||
assert(!m_pLego3DView);
|
||||
|
||||
m_pViewLODListManager = new ViewLODListManager;
|
||||
assert(m_pViewLODListManager);
|
||||
|
||||
m_pRenderer = Tgl::CreateRenderer();
|
||||
assert(m_pRenderer);
|
||||
|
||||
m_pLego3DView = new Lego3DView;
|
||||
|
||||
result = InitializeCreateStruct(tglSurfaceCreateStruct, rCreateStruct);
|
||||
assert(result);
|
||||
|
||||
result = m_pLego3DView->Create(tglSurfaceCreateStruct, m_pRenderer);
|
||||
assert(result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100ab460
|
||||
void Lego3DManager::Destroy()
|
||||
{
|
||||
delete m_pLego3DView;
|
||||
m_pLego3DView = 0;
|
||||
|
||||
delete m_pRenderer;
|
||||
m_pRenderer = 0;
|
||||
|
||||
delete m_pViewLODListManager;
|
||||
m_pViewLODListManager = 0;
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100ab4b0
|
||||
double Lego3DManager::Render(double p_und)
|
||||
{
|
||||
assert(m_pLego3DView);
|
||||
|
||||
return m_pLego3DView->Render(p_und);
|
||||
}
|
Reference in New Issue
Block a user