mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-21 07:11:16 +00:00
Fixes
This commit is contained in:
parent
a942195b50
commit
093e9d8578
@ -113,57 +113,66 @@ Result GroupImpl::RemoveAll()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100a3540
|
// FUNCTION: LEGO1 0x100a3540
|
||||||
Result GroupImpl::Bounds(D3DVECTOR *p_min, D3DVECTOR *p_max)
|
Result GroupImpl::Bounds(D3DVECTOR* p_min, D3DVECTOR* p_max)
|
||||||
{
|
{
|
||||||
D3DRMBOX size;
|
D3DRMBOX size;
|
||||||
IDirect3DRMFrame2 *frame = m_data;
|
IDirect3DRMFrame2* frame = m_data;
|
||||||
size.min.x = 88888.f;
|
|
||||||
size.min.y = 88888.f;
|
size.min.x = 88888.f;
|
||||||
size.min.z = 88888.f;
|
size.min.y = 88888.f;
|
||||||
size.max.x = -88888.f;
|
size.min.z = 88888.f;
|
||||||
size.max.y = -88888.f;
|
size.max.x = -88888.f;
|
||||||
size.max.z = -88888.f;
|
size.max.y = -88888.f;
|
||||||
IDirect3DRMVisualArray *visuals;
|
size.max.z = -88888.f;
|
||||||
Result result = (Result) SUCCEEDED(frame->GetVisuals(&visuals));
|
|
||||||
if (result) {
|
IDirect3DRMVisualArray* visuals;
|
||||||
int i;
|
Result result = (Result) SUCCEEDED(frame->GetVisuals(&visuals));
|
||||||
for (i = 0; i < (int)visuals->GetSize(); i++) {
|
|
||||||
IDirect3DRMVisual *visual;
|
if (result == Success) {
|
||||||
visuals->GetElement(i, &visual);
|
int i;
|
||||||
IDirect3DRMMesh *mesh;
|
for (i = 0; i < (int) visuals->GetSize(); i++) {
|
||||||
/*
|
IDirect3DRMVisual* visual;
|
||||||
* BUG: should be:
|
visuals->GetElement(i, &visual);
|
||||||
* visual->QueryInterface(IID_IDirect3DRMMesh, (void**)&mesh));
|
IDirect3DRMMesh* mesh;
|
||||||
*/
|
/*
|
||||||
result = (Result) SUCCEEDED(visual->QueryInterface(IID_IDirect3DRMMeshBuilder, (void**)&mesh));
|
* BUG: should be:
|
||||||
if (result) {
|
* visual->QueryInterface(IID_IDirect3DRMMesh, (void**)&mesh));
|
||||||
D3DRMBOX box;
|
*/
|
||||||
result = (Result) SUCCEEDED(mesh->GetBox(&box));
|
result = (Result) SUCCEEDED(visual->QueryInterface(IID_IDirect3DRMMeshBuilder, (void**) &mesh));
|
||||||
if (size.max.y < box.max.y) {
|
|
||||||
size.max.y = box.max.y;
|
if (result == Success) {
|
||||||
}
|
D3DRMBOX box;
|
||||||
if (size.max.z < box.max.z) {
|
result = (Result) SUCCEEDED(mesh->GetBox(&box));
|
||||||
size.max.z = box.max.z;
|
|
||||||
}
|
if (size.max.y < box.max.y) {
|
||||||
if (box.min.x < size.min.x) {
|
size.max.y = box.max.y;
|
||||||
size.min.x = box.min.x;
|
}
|
||||||
}
|
if (size.max.z < box.max.z) {
|
||||||
if (box.min.y < size.min.y) {
|
size.max.z = box.max.z;
|
||||||
size.min.y = box.min.y;
|
}
|
||||||
}
|
if (box.min.x < size.min.x) {
|
||||||
if (box.min.z < size.min.z) {
|
size.min.x = box.min.x;
|
||||||
size.min.z = box.min.z;
|
}
|
||||||
}
|
if (box.min.y < size.min.y) {
|
||||||
if (size.max.x < box.max.x) {
|
size.min.y = box.min.y;
|
||||||
size.max.x = box.max.x;
|
}
|
||||||
}
|
if (box.min.z < size.min.z) {
|
||||||
mesh->Release();
|
size.min.z = box.min.z;
|
||||||
}
|
}
|
||||||
visual->Release();
|
if (size.max.x < box.max.x) {
|
||||||
}
|
size.max.x = box.max.x;
|
||||||
visuals->Release();
|
}
|
||||||
}
|
|
||||||
*p_min = size.min;
|
mesh->Release();
|
||||||
*p_max = size.max;
|
}
|
||||||
|
|
||||||
|
visual->Release();
|
||||||
|
}
|
||||||
|
|
||||||
|
visuals->Release();
|
||||||
|
}
|
||||||
|
|
||||||
|
*p_min = size.min;
|
||||||
|
*p_max = size.max;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -335,7 +335,7 @@ class GroupImpl : public Group {
|
|||||||
Result RemoveAll() override;
|
Result RemoveAll() override;
|
||||||
|
|
||||||
// vtable+0x30
|
// vtable+0x30
|
||||||
Result Bounds(D3DVECTOR *p_min, D3DVECTOR *p_max) override;
|
Result Bounds(D3DVECTOR* p_min, D3DVECTOR* p_max) override;
|
||||||
|
|
||||||
IDirect3DRMFrame2* ImplementationData() const { return m_data; }
|
IDirect3DRMFrame2* ImplementationData() const { return m_data; }
|
||||||
|
|
||||||
|
|||||||
@ -305,7 +305,7 @@ class Group : public Object {
|
|||||||
|
|
||||||
// This is TransformLocalToWorld in the leak, however it seems
|
// This is TransformLocalToWorld in the leak, however it seems
|
||||||
// to have been replaced by something else in the shipped code.
|
// to have been replaced by something else in the shipped code.
|
||||||
virtual Result Bounds(D3DVECTOR *, D3DVECTOR *) = 0;
|
virtual Result Bounds(D3DVECTOR*, D3DVECTOR*) = 0;
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x100a2510
|
// SYNTHETIC: LEGO1 0x100a2510
|
||||||
// Tgl::Group::~Group
|
// Tgl::Group::~Group
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user