mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-19 22:31:15 +00:00
CreateCamera and CreateTexture
This commit is contained in:
parent
c9a985fb86
commit
1170cca8ea
@ -99,6 +99,7 @@ class RendererImpl : public Renderer {
|
||||
|
||||
const RendererDataType& ImplementationData() const { return m_data; }
|
||||
|
||||
// FUNCTION: BETA10 0x10174c10
|
||||
RendererDataType& ImplementationData() { return m_data; }
|
||||
|
||||
public:
|
||||
@ -115,6 +116,18 @@ class RendererImpl : public Renderer {
|
||||
ViewImpl& rView
|
||||
);
|
||||
inline Result CreateMeshBuilder(MeshBuilderImpl& rMesh);
|
||||
inline Result CreateCamera(CameraImpl& rCamera);
|
||||
inline Result CreateTexture(TextureImpl& rTexture);
|
||||
inline Result CreateTexture(
|
||||
TextureImpl& rTexture,
|
||||
int width,
|
||||
int height,
|
||||
int bitsPerTexel,
|
||||
const void* pTexels,
|
||||
int texelsArePersistent,
|
||||
int paletteEntryCount,
|
||||
const PaletteEntry* pEntries
|
||||
);
|
||||
|
||||
private:
|
||||
RendererDataType m_data;
|
||||
|
||||
@ -190,14 +190,33 @@ Group* RendererImpl::CreateGroup(const Group* pParent)
|
||||
return group;
|
||||
}
|
||||
|
||||
// FUNCTION: BETA10 0x1016d4b0
|
||||
inline Result RendererCreateCamera(IDirect3DRM2* pD3DRM, IDirect3DRMFrame2*& rpCamera)
|
||||
{
|
||||
return ResultVal(pD3DRM->CreateFrame(NULL, &rpCamera));
|
||||
}
|
||||
|
||||
// FUNCTION: BETA10 0x1016d420
|
||||
inline Result RendererImpl::CreateCamera(CameraImpl& rCamera)
|
||||
{
|
||||
assert(m_data);
|
||||
assert(!rCamera.ImplementationData());
|
||||
|
||||
return RendererCreateCamera(m_data, rCamera.ImplementationData());
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100a1c30
|
||||
// FUNCTION: BETA10 0x1016a980
|
||||
Camera* RendererImpl::CreateCamera()
|
||||
{
|
||||
assert(m_data);
|
||||
CameraImpl* camera = new CameraImpl();
|
||||
if (FAILED(m_data->CreateFrame(NULL, &camera->m_data))) {
|
||||
|
||||
if (!CreateCamera(*camera)) {
|
||||
delete camera;
|
||||
camera = NULL;
|
||||
}
|
||||
|
||||
return camera;
|
||||
}
|
||||
|
||||
@ -309,39 +328,76 @@ MeshBuilder* RendererImpl::CreateMeshBuilder()
|
||||
return meshBuilder;
|
||||
}
|
||||
|
||||
// FUNCTION: BETA10 0x1016d9c0
|
||||
inline Result RendererCreateTexture(
|
||||
IDirect3DRM2* renderer,
|
||||
IDirect3DRMTexture*& texture,
|
||||
IDirect3DRM2* pRenderer,
|
||||
int width,
|
||||
int height,
|
||||
int bytesPerPixel,
|
||||
void* pBuffer,
|
||||
int useBuffer,
|
||||
int paletteSize,
|
||||
PaletteEntry* pEntries
|
||||
PaletteEntry* pEntries,
|
||||
IDirect3DRMTexture*& rpTexture
|
||||
)
|
||||
{
|
||||
TglD3DRMIMAGE* image;
|
||||
Result result;
|
||||
|
||||
image = new TglD3DRMIMAGE(width, height, bytesPerPixel, pBuffer, useBuffer, paletteSize, pEntries);
|
||||
TglD3DRMIMAGE* pImage = new TglD3DRMIMAGE(width, height, bytesPerPixel, pBuffer, useBuffer, paletteSize, pEntries);
|
||||
assert(pImage);
|
||||
|
||||
// TODO: LPDIRECT3DRMTEXTURE2?
|
||||
result = ResultVal(renderer->CreateTexture(&image->m_image, (LPDIRECT3DRMTEXTURE2*) &texture));
|
||||
result = ResultVal(pRenderer->CreateTexture(&pImage->m_image, (LPDIRECT3DRMTEXTURE2*) &rpTexture));
|
||||
assert(Succeeded(result));
|
||||
assert((rpTexture->AddRef(), rpTexture->Release()) == 1);
|
||||
|
||||
if (Succeeded(result)) {
|
||||
result = TextureImpl::SetImage(texture, image);
|
||||
result = TextureImpl::SetImage(rpTexture, pImage);
|
||||
assert(Succeeded(result));
|
||||
|
||||
if (!Succeeded(result)) {
|
||||
texture->Release();
|
||||
texture = NULL;
|
||||
delete image;
|
||||
rpTexture->Release();
|
||||
rpTexture = NULL;
|
||||
delete pImage;
|
||||
}
|
||||
}
|
||||
else {
|
||||
delete image;
|
||||
delete pImage;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// FUNCTION: BETA10 0x1016d910
|
||||
inline Result RendererImpl::CreateTexture(
|
||||
TextureImpl& rTexture,
|
||||
int width,
|
||||
int height,
|
||||
int bitsPerTexel,
|
||||
const void* pTexels,
|
||||
int texelsArePersistent,
|
||||
int paletteEntryCount,
|
||||
const PaletteEntry* pEntries
|
||||
)
|
||||
{
|
||||
assert(m_data);
|
||||
assert(!rTexture.ImplementationData());
|
||||
|
||||
return RendererCreateTexture(
|
||||
m_data,
|
||||
width,
|
||||
height,
|
||||
bitsPerTexel,
|
||||
const_cast<void*>(pTexels),
|
||||
texelsArePersistent,
|
||||
paletteEntryCount,
|
||||
const_cast<PaletteEntry*>(pEntries),
|
||||
rTexture.ImplementationData()
|
||||
);
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100a1f50
|
||||
// FUNCTION: BETA10 0x1016ad00
|
||||
Texture* RendererImpl::CreateTexture(
|
||||
int width,
|
||||
int height,
|
||||
@ -352,10 +408,11 @@ Texture* RendererImpl::CreateTexture(
|
||||
const PaletteEntry* pEntries
|
||||
)
|
||||
{
|
||||
assert(m_data);
|
||||
|
||||
TextureImpl* texture = new TextureImpl();
|
||||
if (!Succeeded(RendererCreateTexture(
|
||||
m_data,
|
||||
texture->m_data,
|
||||
if (!CreateTexture(
|
||||
*texture,
|
||||
width,
|
||||
height,
|
||||
bitsPerTexel,
|
||||
@ -363,21 +420,40 @@ Texture* RendererImpl::CreateTexture(
|
||||
texelsArePersistent,
|
||||
paletteEntryCount,
|
||||
const_cast<PaletteEntry*>(pEntries)
|
||||
))) {
|
||||
)) {
|
||||
delete texture;
|
||||
texture = NULL;
|
||||
}
|
||||
return texture;
|
||||
}
|
||||
|
||||
// FUNCTION: BETA10 0x1016dcb0
|
||||
inline Result RendererCreateTexture(IDirect3DRM2* pRenderer, IDirect3DRMTexture*& rpTexture)
|
||||
{
|
||||
return RendererCreateTexture(pRenderer, 0, 0, 0, NULL, FALSE, 0, NULL, rpTexture);
|
||||
}
|
||||
|
||||
// FUNCTION: BETA10 0x1016dc20
|
||||
inline Result RendererImpl::CreateTexture(TextureImpl& rTexture)
|
||||
{
|
||||
assert(m_data);
|
||||
assert(!rTexture.ImplementationData());
|
||||
|
||||
return RendererCreateTexture(m_data, rTexture.ImplementationData());
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100a20d0
|
||||
// FUNCTION: BETA10 0x1016ae20
|
||||
Texture* RendererImpl::CreateTexture()
|
||||
{
|
||||
assert(m_data);
|
||||
|
||||
TextureImpl* texture = new TextureImpl();
|
||||
if (!Succeeded(RendererCreateTexture(m_data, texture->m_data, 0, 0, 0, NULL, FALSE, 0, NULL))) {
|
||||
if (!CreateTexture(*texture)) {
|
||||
delete texture;
|
||||
texture = NULL;
|
||||
}
|
||||
|
||||
return texture;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user