mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-24 00:31:16 +00:00
Full fix for ordering problems
This commit is contained in:
parent
ce22c366e3
commit
8dad24301a
@ -13,7 +13,7 @@ Renderer* CreateRenderer()
|
|||||||
return renderer;
|
return renderer;
|
||||||
}
|
}
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x1010103c
|
// GLOBAL OFFSET: LEGO1 0x1010103c
|
||||||
IDirect3DRM* g_pD3DRM = NULL;
|
IDirect3DRM* g_pD3DRM = NULL;
|
||||||
|
|
||||||
// Inlined only
|
// Inlined only
|
||||||
@ -53,7 +53,7 @@ Device* RendererImpl::CreateDevice(const DeviceDirect3DCreateData& p_data)
|
|||||||
return device;
|
return device;
|
||||||
}
|
}
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x10101040
|
// GLOBAL OFFSET: LEGO1 0x10101040
|
||||||
static int gSetBufferCount = 1;
|
static int gSetBufferCount = 1;
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x100a1900
|
// OFFSET: LEGO1 0x100a1900
|
||||||
|
|||||||
@ -4,6 +4,14 @@ using namespace TglImpl;
|
|||||||
|
|
||||||
DECOMP_SIZE_ASSERT(TglD3DRMIMAGE, 0x40);
|
DECOMP_SIZE_ASSERT(TglD3DRMIMAGE, 0x40);
|
||||||
|
|
||||||
|
inline TglD3DRMIMAGE* TextureGetImage(IDirect3DRMTexture* p_texture)
|
||||||
|
{
|
||||||
|
return reinterpret_cast<TglD3DRMIMAGE*>(p_texture->GetAppData());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Forward declare to satisfy order check
|
||||||
|
void TextureDestroyCallback(IDirect3DRMObject* pObject, void* pArg);
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x100a12a0
|
// OFFSET: LEGO1 0x100a12a0
|
||||||
Result TextureImpl::SetImage(IDirect3DRMTexture* p_self, TglD3DRMIMAGE* p_image)
|
Result TextureImpl::SetImage(IDirect3DRMTexture* p_self, TglD3DRMIMAGE* p_image)
|
||||||
{
|
{
|
||||||
@ -127,11 +135,6 @@ TextureImpl::~TextureImpl()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline TglD3DRMIMAGE* TextureGetImage(IDirect3DRMTexture* p_texture)
|
|
||||||
{
|
|
||||||
return reinterpret_cast<TglD3DRMIMAGE*>(p_texture->GetAppData());
|
|
||||||
}
|
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x100a3c10
|
// OFFSET: LEGO1 0x100a3c10
|
||||||
Result TextureImpl::SetTexels(int p_width, int p_height, int p_bitsPerTexel, void* p_texels)
|
Result TextureImpl::SetTexels(int p_width, int p_height, int p_bitsPerTexel, void* p_texels)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -42,6 +42,9 @@ ViewportAppData::~ViewportAppData()
|
|||||||
m_pLightFrame->Release();
|
m_pLightFrame->Release();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Forward declare to satisfy order check
|
||||||
|
void ViewportDestroyCallback(IDirect3DRMObject* p_object, void* p_arg);
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x100a1160
|
// OFFSET: LEGO1 0x100a1160
|
||||||
Result ViewImpl::ViewportCreateAppData(IDirect3DRM* p_device, IDirect3DRMViewport* p_view, IDirect3DRMFrame* p_camera)
|
Result ViewImpl::ViewportCreateAppData(IDirect3DRM* p_device, IDirect3DRMViewport* p_view, IDirect3DRMFrame* p_camera)
|
||||||
{
|
{
|
||||||
@ -58,6 +61,25 @@ Result ViewImpl::ViewportCreateAppData(IDirect3DRM* p_device, IDirect3DRMViewpor
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline Result ViewRestoreFrameAfterRender(
|
||||||
|
IDirect3DRMFrame* pFrame,
|
||||||
|
IDirect3DRMFrame* pCamera,
|
||||||
|
IDirect3DRMFrame* pLightFrame
|
||||||
|
)
|
||||||
|
{
|
||||||
|
Result result = Success;
|
||||||
|
if (pFrame) {
|
||||||
|
// remove camera and light frame from frame that was rendered
|
||||||
|
// this doesn't destroy the camera as it is still the camera of the viewport...
|
||||||
|
result = ResultVal(pFrame->DeleteChild(pCamera));
|
||||||
|
result = ResultVal(pFrame->DeleteChild(pLightFrame));
|
||||||
|
|
||||||
|
// decrease frame's ref count (it was increased in ViewPrepareFrameForRender())
|
||||||
|
pFrame->Release();
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x100a1240
|
// OFFSET: LEGO1 0x100a1240
|
||||||
void ViewportDestroyCallback(IDirect3DRMObject* p_object, void* p_arg)
|
void ViewportDestroyCallback(IDirect3DRMObject* p_object, void* p_arg)
|
||||||
{
|
{
|
||||||
@ -128,25 +150,6 @@ Result ViewImpl::Remove(const Light* p_light)
|
|||||||
return ResultVal(ViewportGetLightFrame(m_data)->DeleteChild(frame));
|
return ResultVal(ViewportGetLightFrame(m_data)->DeleteChild(frame));
|
||||||
}
|
}
|
||||||
|
|
||||||
inline Result ViewRestoreFrameAfterRender(
|
|
||||||
IDirect3DRMFrame* pFrame,
|
|
||||||
IDirect3DRMFrame* pCamera,
|
|
||||||
IDirect3DRMFrame* pLightFrame
|
|
||||||
)
|
|
||||||
{
|
|
||||||
Result result = Success;
|
|
||||||
if (pFrame) {
|
|
||||||
// remove camera and light frame from frame that was rendered
|
|
||||||
// this doesn't destroy the camera as it is still the camera of the viewport...
|
|
||||||
result = ResultVal(pFrame->DeleteChild(pCamera));
|
|
||||||
result = ResultVal(pFrame->DeleteChild(pLightFrame));
|
|
||||||
|
|
||||||
// decrease frame's ref count (it was increased in ViewPrepareFrameForRender())
|
|
||||||
pFrame->Release();
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x100a2df0
|
// OFFSET: LEGO1 0x100a2df0
|
||||||
Result ViewImpl::SetCamera(const Camera* p_camera)
|
Result ViewImpl::SetCamera(const Camera* p_camera)
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user