Isle
Loading...
Searching...
No Matches
lego3dmanager.cpp
Go to the documentation of this file.
1// Lego3DManager.cpp : implementation file
2//
3#include "lego3dmanager.h"
4
5#include "decomp.h"
8
10
12
13// FUNCTION: LEGO1 0x100ab2d0
15 TglSurface::CreateStruct& rTglSurfaceCreateStruct,
16 const Lego3DManager::CreateStruct& rCreateStruct
17)
18{
19 // initializes a TglSurface::CreateStruct from a Lego3DManager::CreateStruct
20 rTglSurfaceCreateStruct.m_pDriverGUID = rCreateStruct.m_pDriverGUID;
21 rTglSurfaceCreateStruct.m_hWnd = rCreateStruct.m_hWnd;
22 rTglSurfaceCreateStruct.m_pDirectDraw = rCreateStruct.m_pDirectDraw;
23 rTglSurfaceCreateStruct.m_pFrontBuffer = rCreateStruct.m_pFrontBuffer;
24 rTglSurfaceCreateStruct.m_pBackBuffer = rCreateStruct.m_pBackBuffer;
25 rTglSurfaceCreateStruct.m_pPalette = rCreateStruct.m_pPalette;
26 rTglSurfaceCreateStruct.m_isFullScreen = rCreateStruct.m_isFullScreen;
27 rTglSurfaceCreateStruct.m_isWideViewAngle = rCreateStruct.m_isWideViewAngle;
28 rTglSurfaceCreateStruct.m_direct3d = rCreateStruct.m_direct3d;
29 rTglSurfaceCreateStruct.m_d3dDevice = rCreateStruct.m_d3dDevice;
30 return TRUE;
31}
32
34
35// FUNCTION: LEGO1 0x100ab320
37{
38 // Tgl things
39 m_pRenderer = 0;
40
41 m_pLego3DView = 0;
42 m_pViewLODListManager = 0;
43}
44
45// FUNCTION: LEGO1 0x100ab360
47{
48 Destroy();
49}
50
51// FUNCTION: LEGO1 0x100ab370
53{
54 TglSurface::CreateStruct tglSurfaceCreateStruct;
55 BOOL result;
56
57 assert(!m_pViewLODListManager);
58 assert(!m_pRenderer);
59 assert(!m_pLego3DView);
60
61 m_pViewLODListManager = new ViewLODListManager;
62 assert(m_pViewLODListManager);
63
64 m_pRenderer = Tgl::CreateRenderer();
65 assert(m_pRenderer);
66
67 m_pLego3DView = new Lego3DView;
68
69 result = InitializeCreateStruct(tglSurfaceCreateStruct, rCreateStruct);
70 assert(result);
71
72 result = m_pLego3DView->Create(tglSurfaceCreateStruct, m_pRenderer);
73 assert(result);
74
75 return result;
76}
77
78// FUNCTION: LEGO1 0x100ab460
80{
81 delete m_pLego3DView;
82 m_pLego3DView = 0;
83
84 delete m_pRenderer;
85 m_pRenderer = 0;
86
87 delete m_pViewLODListManager;
88 m_pViewLODListManager = 0;
89}
90
91// FUNCTION: LEGO1 0x100ab4b0
92double Lego3DManager::Render(double p_und)
93{
94 assert(m_pLego3DView);
95
96 return m_pLego3DView->Render(p_und);
97}
98
99// FUNCTION: LEGO1 0x100ab4d0
100// FUNCTION: BETA10 0x1017baeb
101int Lego3DManager::SetFrustrum(float p_fov, float p_front, float p_back)
102{
103 m_pLego3DView->GetView()->SetFrustrum(p_front, p_back, p_fov);
104 m_pLego3DView->GetViewManager()->SetFrustrum(p_fov, p_front, p_back);
105 return 0;
106}
[AI] Central class managing the LEGO Island 3D rendering subsystem.
Definition: lego3dmanager.h:39
BOOL Create(CreateStruct &rCreateStruct)
[AI] Initializes the LEGO 3D system using the specified creation parameters.
int SetFrustrum(float p_fov, float p_front, float p_back)
[AI] Sets the 3D perspective frustum parameters for camera and view.
void Destroy()
[AI] Cleans up the 3D system and destroys internal objects.
Lego3DManager()
[AI] Constructs and initializes the Lego3DManager in an uninitialized state.
double Render(double p_und)
[AI] Renders the current frame.
virtual ~Lego3DManager()
[AI] Destructor.
[AI] Represents a 3D view for rendering and managing LEGO game objects in a 3D scene.
Definition: lego3dview.h:20
BOOL Create(const CreateStruct &rCreateStruct, Tgl::Renderer *pRenderer)
[AI] Initializes the 3D view with the specified surface creation parameters and renderer interface.
Definition: lego3dview.cpp:29
double Render(double p_und)
[AI] Renders the scene using the ViewManager and returns the render time.
Definition: lego3dview.cpp:148
ViewManager * GetViewManager()
[AI] Returns the ViewManager responsible for managing scene objects and transformations.
Definition: lego3dview.h:154
Tgl::View * GetView() const
[AI] Gets the current view/camera for this surface.
Definition: tglsurface.h:108
virtual Result SetFrustrum(float frontClippingDistance, float backClippingDistance, float degrees)=0
[AI] Sets front and back clipping planes and view field in degrees.
[AI] Manages the lifecycle, lookup, and sharing of ViewLODList instances for different ROI names.
Definition: viewlodlist.h:111
void SetFrustrum(float fov, float front, float back)
[AI] Sets the projection frustum parameters and marks the frustum as needing recalculation.
#define TRUE
Definition: d3drmdef.h:28
#define DECOMP_SIZE_ASSERT(T, S)
Definition: decomp.h:19
typedef BOOL(FAR PASCAL *LPDIENUMDEVICEOBJECTSCALLBACKA)(LPCDIDEVICEOBJECTINSTANCEA
BOOL InitializeCreateStruct(TglSurface::CreateStruct &rTglSurfaceCreateStruct, const Lego3DManager::CreateStruct &rCreateStruct)
Renderer * CreateRenderer()
[AI] Instantiates and returns a new Tgl::Renderer implementation.
Definition: renderer.cpp:8
[AI] Construction parameters for initializing the 3D system.
Definition: lego3dmanager.h:45
IDirectDrawSurface * m_pFrontBuffer
[AI] DirectDraw front buffer surface
Definition: lego3dmanager.h:49
IDirect3D2 * m_direct3d
[AI] Direct3D interface
Definition: lego3dmanager.h:54
IDirectDrawPalette * m_pPalette
[AI] Color palette for indexed display modes
Definition: lego3dmanager.h:51
IDirect3DDevice2 * m_d3dDevice
[AI] Direct3D device to use for rendering
Definition: lego3dmanager.h:55
HWND m_hWnd
[AI] Window handle to associate DirectDraw surfaces with
Definition: lego3dmanager.h:47
IDirectDrawSurface * m_pBackBuffer
[AI] DirectDraw back buffer surface
Definition: lego3dmanager.h:50
const GUID * m_pDriverGUID
[AI] Pointer to DirectDraw driver GUID to use (NULL for default)
Definition: lego3dmanager.h:46
IDirectDraw * m_pDirectDraw
[AI] Pointer to active DirectDraw interface
Definition: lego3dmanager.h:48
BOOL m_isFullScreen
[AI] TRUE if 3D system should run in full-screen mode
Definition: lego3dmanager.h:52
BOOL m_isWideViewAngle
[AI] TRUE for wide-angle (FOV) projection
Definition: lego3dmanager.h:53
[AI] Contains initialization parameters for creating a TglSurface and its underlying DDraw/D3D resour...
Definition: tglsurface.h:40
BOOL m_isWideViewAngle
[AI] Enables wide or default field-of-view projection.
Definition: tglsurface.h:48
BOOL m_isFullScreen
[AI] TRUE to use fullscreen mode, FALSE for windowed rendering.
Definition: tglsurface.h:47
HWND m_hWnd
[AI] Handle to the window to be associated with this surface.
Definition: tglsurface.h:42
IDirectDraw * m_pDirectDraw
[AI] DirectDraw interface pointer for low-level surface management.
Definition: tglsurface.h:43
IDirectDrawSurface * m_pFrontBuffer
[AI] DirectDraw primary/front buffer surface.
Definition: tglsurface.h:44
IDirect3D2 * m_direct3d
[AI] Direct3D2 interface pointer for 3D initialization.
Definition: tglsurface.h:49
const GUID * m_pDriverGUID
[AI] DirectDraw driver GUID to use or NULL for primary display.
Definition: tglsurface.h:41
IDirect3DDevice2 * m_d3dDevice
[AI] Direct3D2 device interface (hardware or emulated).
Definition: tglsurface.h:50
IDirectDrawPalette * m_pPalette
[AI] Optional palette for indexed color surfaces.
Definition: tglsurface.h:46
IDirectDrawSurface * m_pBackBuffer
[AI] Optional DirectDraw back buffer for double buffering.
Definition: tglsurface.h:45