mirror of
https://github.com/isledecomp/isle.git
synced 2025-10-27 10:24:18 +00:00
Implement/match LegoVideoManager::ConfigureD3DRM (#408)
* Implement/match LegoVideoManager::ConfigureD3DRM * Fix name * Remove unnecessary forward decl
This commit is contained in:
committed by
GitHub
parent
9651ece809
commit
27269647f8
@@ -5,10 +5,10 @@
|
||||
#include <d3drm.h>
|
||||
|
||||
// Forward declare D3D types
|
||||
struct IDirect3DRM;
|
||||
struct IDirect3DRMDevice;
|
||||
struct IDirect3DRM2;
|
||||
struct IDirect3DRMDevice2;
|
||||
struct IDirect3DRMViewport;
|
||||
struct IDirect3DRMFrame;
|
||||
struct IDirect3DRMFrame2;
|
||||
struct IDirect3DRMMesh;
|
||||
struct IDirect3DRMMeshBuilder;
|
||||
struct IDirect3DRMTexture;
|
||||
@@ -82,7 +82,7 @@ public:
|
||||
inline void Destroy();
|
||||
|
||||
private:
|
||||
IDirect3DRM* m_data;
|
||||
IDirect3DRM2* m_data;
|
||||
};
|
||||
|
||||
// VTABLE 0x100db988
|
||||
@@ -114,12 +114,12 @@ public:
|
||||
virtual void InitFromD3DDevice(Device*);
|
||||
virtual void InitFromWindowsDevice(Device*);
|
||||
|
||||
inline IDirect3DRMDevice* ImplementationData() const { return m_data; }
|
||||
inline IDirect3DRMDevice2* ImplementationData() const { return m_data; }
|
||||
|
||||
friend class RendererImpl;
|
||||
|
||||
private:
|
||||
IDirect3DRMDevice* m_data;
|
||||
IDirect3DRMDevice2* m_data;
|
||||
};
|
||||
|
||||
// VTABLE 0x100db9e8
|
||||
@@ -166,7 +166,7 @@ public:
|
||||
|
||||
inline IDirect3DRMViewport* ImplementationData() const { return m_data; }
|
||||
|
||||
static Result ViewportCreateAppData(IDirect3DRM*, IDirect3DRMViewport*, IDirect3DRMFrame*);
|
||||
static Result ViewportCreateAppData(IDirect3DRM2*, IDirect3DRMViewport*, IDirect3DRMFrame2*);
|
||||
|
||||
friend class RendererImpl;
|
||||
|
||||
@@ -191,12 +191,12 @@ public:
|
||||
// vtable+0x08
|
||||
virtual Result SetTransformation(const FloatMatrix4&);
|
||||
|
||||
inline IDirect3DRMFrame* ImplementationData() const { return m_data; }
|
||||
inline IDirect3DRMFrame2* ImplementationData() const { return m_data; }
|
||||
|
||||
friend class RendererImpl;
|
||||
|
||||
private:
|
||||
IDirect3DRMFrame* m_data;
|
||||
IDirect3DRMFrame2* m_data;
|
||||
};
|
||||
|
||||
// VTABLE 0x100dbaf8
|
||||
@@ -217,12 +217,12 @@ public:
|
||||
virtual Result SetTransformation(const FloatMatrix4&);
|
||||
virtual Result SetColor(float r, float g, float b);
|
||||
|
||||
inline IDirect3DRMFrame* ImplementationData() const { return m_data; }
|
||||
inline IDirect3DRMFrame2* ImplementationData() const { return m_data; }
|
||||
|
||||
friend class RendererImpl;
|
||||
|
||||
private:
|
||||
IDirect3DRMFrame* m_data;
|
||||
IDirect3DRMFrame2* m_data;
|
||||
};
|
||||
|
||||
// VTABLE 0x100dbb88
|
||||
@@ -301,7 +301,7 @@ public:
|
||||
friend class RendererImpl;
|
||||
|
||||
private:
|
||||
IDirect3DRMFrame* m_data;
|
||||
IDirect3DRMFrame2* m_data;
|
||||
};
|
||||
|
||||
// VTABLE 0x100dbb18
|
||||
|
||||
@@ -14,7 +14,7 @@ Renderer* Tgl::CreateRenderer()
|
||||
}
|
||||
|
||||
// GLOBAL: LEGO1 0x1010103c
|
||||
IDirect3DRM* g_pD3DRM = NULL;
|
||||
IDirect3DRM2* g_pD3DRM = NULL;
|
||||
|
||||
// Inlined only
|
||||
Result RendererImpl::Create()
|
||||
@@ -31,7 +31,7 @@ Result RendererImpl::Create()
|
||||
return (m_data != NULL) ? Success : Error;
|
||||
}
|
||||
|
||||
inline void RendererDestroy(IDirect3DRM* pRenderer)
|
||||
inline void RendererDestroy(IDirect3DRM2* pRenderer)
|
||||
{
|
||||
int refCount = pRenderer->Release();
|
||||
if (refCount <= 0) {
|
||||
@@ -84,9 +84,9 @@ Device* RendererImpl::CreateDevice(const DeviceDirectDrawCreateData& data)
|
||||
}
|
||||
|
||||
inline Result RendererCreateView(
|
||||
IDirect3DRM* pRenderer,
|
||||
IDirect3DRMDevice* pDevice,
|
||||
IDirect3DRMFrame* pCamera,
|
||||
IDirect3DRM2* pRenderer,
|
||||
IDirect3DRMDevice2* pDevice,
|
||||
IDirect3DRMFrame2* pCamera,
|
||||
IDirect3DRMViewport*& rpView,
|
||||
unsigned long x,
|
||||
unsigned long y,
|
||||
@@ -133,7 +133,7 @@ View* RendererImpl::CreateView(
|
||||
return view;
|
||||
}
|
||||
|
||||
inline Result RendererCreateGroup(IDirect3DRM* pRenderer, IDirect3DRMFrame* pParent, IDirect3DRMFrame*& rpGroup)
|
||||
inline Result RendererCreateGroup(IDirect3DRM2* pRenderer, IDirect3DRMFrame2* pParent, IDirect3DRMFrame2*& rpGroup)
|
||||
{
|
||||
Result result = ResultVal(pRenderer->CreateFrame(NULL, &rpGroup));
|
||||
if (Succeeded(result) && pParent) {
|
||||
@@ -195,7 +195,7 @@ Light* RendererImpl::CreateLight(LightType type, float r, float g, float b)
|
||||
translatedType = D3DRMLIGHT_AMBIENT;
|
||||
}
|
||||
|
||||
LPDIRECT3DRMFRAME frame;
|
||||
LPDIRECT3DRMFRAME2 frame;
|
||||
Result result = ResultVal(m_data->CreateFrame(NULL, &frame));
|
||||
if (Succeeded(result)) {
|
||||
LPDIRECT3DRMLIGHT d3dLight;
|
||||
@@ -240,7 +240,7 @@ Unk* RendererImpl::CreateUnk()
|
||||
}
|
||||
|
||||
inline Result RendererCreateTexture(
|
||||
IDirect3DRM* renderer,
|
||||
IDirect3DRM2* renderer,
|
||||
IDirect3DRMTexture*& texture,
|
||||
int width,
|
||||
int height,
|
||||
@@ -255,7 +255,8 @@ inline Result RendererCreateTexture(
|
||||
Result result;
|
||||
|
||||
image = new TglD3DRMIMAGE(width, height, bytesPerPixel, pBuffer, useBuffer, paletteSize, pEntries);
|
||||
result = ResultVal(renderer->CreateTexture(&image->m_image, &texture));
|
||||
// TODO: LPDIRECT3DRMTEXTURE2?
|
||||
result = ResultVal(renderer->CreateTexture(&image->m_image, (LPDIRECT3DRMTEXTURE2*) &texture));
|
||||
if (Succeeded(result)) {
|
||||
result = TextureImpl::SetImage(texture, image);
|
||||
if (!Succeeded(result)) {
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
using namespace TglImpl;
|
||||
|
||||
struct ViewportAppData {
|
||||
ViewportAppData(IDirect3DRM* pRenderer);
|
||||
ViewportAppData(IDirect3DRM2* pRenderer);
|
||||
~ViewportAppData();
|
||||
|
||||
IDirect3DRMFrame* m_pLightFrame;
|
||||
IDirect3DRMFrame* m_pCamera;
|
||||
IDirect3DRMFrame* m_pLastRenderedFrame;
|
||||
IDirect3DRMFrame2* m_pLightFrame;
|
||||
IDirect3DRMFrame2* m_pCamera;
|
||||
IDirect3DRMFrame2* m_pLastRenderedFrame;
|
||||
float m_backgroundColorRed;
|
||||
float m_backgroundColorGreen;
|
||||
float m_backgroundColorBlue;
|
||||
@@ -17,7 +17,7 @@ struct ViewportAppData {
|
||||
DECOMP_SIZE_ASSERT(ViewportAppData, 0x18);
|
||||
|
||||
// FUNCTION: LEGO1 0x100a10b0
|
||||
ViewportAppData::ViewportAppData(IDirect3DRM* pRenderer)
|
||||
ViewportAppData::ViewportAppData(IDirect3DRM2* pRenderer)
|
||||
{
|
||||
pRenderer->CreateFrame(NULL, &m_pLightFrame);
|
||||
m_pCamera = NULL;
|
||||
@@ -46,7 +46,7 @@ ViewportAppData::~ViewportAppData()
|
||||
void ViewportDestroyCallback(IDirect3DRMObject* pObject, void* pArg);
|
||||
|
||||
// FUNCTION: LEGO1 0x100a1160
|
||||
Result ViewImpl::ViewportCreateAppData(IDirect3DRM* pDevice, IDirect3DRMViewport* pView, IDirect3DRMFrame* pCamera)
|
||||
Result ViewImpl::ViewportCreateAppData(IDirect3DRM2* pDevice, IDirect3DRMViewport* pView, IDirect3DRMFrame2* pCamera)
|
||||
{
|
||||
ViewportAppData* data = new ViewportAppData(pDevice);
|
||||
data->m_pCamera = pCamera;
|
||||
@@ -145,7 +145,7 @@ Result ViewImpl::Remove(const Light* pLight)
|
||||
Result ViewImpl::SetCamera(const Camera* pCamera)
|
||||
{
|
||||
const CameraImpl* camera = static_cast<const CameraImpl*>(pCamera);
|
||||
IDirect3DRMFrame* frame = camera->ImplementationData();
|
||||
IDirect3DRMFrame2* frame = camera->ImplementationData();
|
||||
|
||||
ViewportAppData* pViewportAppData;
|
||||
Result result;
|
||||
@@ -249,9 +249,9 @@ Result ViewImpl::Render(const Light* pCamera)
|
||||
{
|
||||
ViewportAppData* appdata = ViewportGetData(m_data);
|
||||
|
||||
IDirect3DRMFrame* light = static_cast<const LightImpl*>(pCamera)->ImplementationData();
|
||||
IDirect3DRMFrame2* light = static_cast<const LightImpl*>(pCamera)->ImplementationData();
|
||||
|
||||
IDirect3DRMFrame* lastRendered = appdata->m_pLastRenderedFrame;
|
||||
IDirect3DRMFrame2* lastRendered = appdata->m_pLastRenderedFrame;
|
||||
if (light != lastRendered) {
|
||||
if (lastRendered) {
|
||||
lastRendered->DeleteChild(appdata->m_pCamera);
|
||||
|
||||
Reference in New Issue
Block a user