mirror of
https://github.com/isledecomp/isle.git
synced 2024-11-22 15:48:09 -05:00
Implement/match ViewManager::Update (#647)
* Implement/match ViewManager::Update * Fix
This commit is contained in:
parent
86f84e1740
commit
4b0c6d1f5f
2 changed files with 87 additions and 4 deletions
|
@ -1,5 +1,6 @@
|
|||
#include "viewmanager.h"
|
||||
|
||||
#include "mxdirectx/mxstopwatch.h"
|
||||
#include "tgl/d3drm/impl.h"
|
||||
#include "viewlod.h"
|
||||
|
||||
|
@ -8,6 +9,9 @@ DECOMP_SIZE_ASSERT(ViewManager, 0x1bc)
|
|||
// GLOBAL: LEGO1 0x100dbcd8
|
||||
int g_unk0x100dbcd8[18] = {0, 1, 5, 6, 2, 3, 3, 0, 4, 1, 2, 6, 0, 3, 2, 4, 5, 6};
|
||||
|
||||
// GLOBAL: LEGO1 0x10101060
|
||||
float g_elapsedSeconds = 0;
|
||||
|
||||
inline undefined4 GetD3DRM(IDirect3DRM2*& d3drm, Tgl::Renderer* pRenderer);
|
||||
inline undefined4 GetFrame(IDirect3DRMFrame2*& frame, Tgl::Group* scene);
|
||||
|
||||
|
@ -111,12 +115,89 @@ void ViewManager::FUN_100a66a0(ViewROI* p_roi)
|
|||
p_roi->SetUnknown0xe0(-1);
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x100a6930
|
||||
void ViewManager::Update(float p_previousRenderTime, float p_und2)
|
||||
// STUB: LEGO1 0x100a66f0
|
||||
void ViewManager::FUN_100a66f0(ViewROI* p_roi, undefined4 p_und)
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100a6930
|
||||
void ViewManager::Update(float p_previousRenderTime, float)
|
||||
{
|
||||
MxStopWatch stopWatch;
|
||||
stopWatch.Start();
|
||||
|
||||
unk0x28 = p_previousRenderTime;
|
||||
flags |= c_bit1;
|
||||
|
||||
if (flags & c_bit3) {
|
||||
Unknown();
|
||||
}
|
||||
else if (flags & c_bit2) {
|
||||
FUN_100a6b90();
|
||||
}
|
||||
|
||||
for (CompoundObject::iterator it = rois.begin(); it != rois.end(); it++) {
|
||||
FUN_100a66f0((ViewROI*) *it, -1);
|
||||
}
|
||||
|
||||
stopWatch.Stop();
|
||||
g_elapsedSeconds = stopWatch.ElapsedSeconds();
|
||||
}
|
||||
|
||||
inline int ViewManager::Unknown()
|
||||
{
|
||||
flags &= ~c_bit3;
|
||||
|
||||
if (height == 0.0F || front == 0.0F) {
|
||||
return -1;
|
||||
}
|
||||
else {
|
||||
float fVar7 = tan(view_angle / 2.0F);
|
||||
unk0x2c = view_angle * view_angle * 4.0F;
|
||||
|
||||
float fVar1 = front * fVar7;
|
||||
float fVar2 = (width / height) * fVar1;
|
||||
float uVar6 = front;
|
||||
float fVar3 = back + front;
|
||||
float fVar4 = fVar3 / front;
|
||||
float fVar5 = fVar4 * fVar1;
|
||||
fVar4 = fVar4 * fVar2;
|
||||
|
||||
float* unk0x90 = (float*) this->unk0x90;
|
||||
|
||||
// clang-format off
|
||||
*unk0x90 = fVar2; unk0x90++;
|
||||
*unk0x90 = fVar1; unk0x90++;
|
||||
*unk0x90 = uVar6; unk0x90++;
|
||||
*unk0x90 = fVar2; unk0x90++;
|
||||
*unk0x90 = -fVar1; unk0x90++;
|
||||
*unk0x90 = uVar6; unk0x90++;
|
||||
*unk0x90 = -fVar2; unk0x90++;
|
||||
*unk0x90 = -fVar1; unk0x90++;
|
||||
*unk0x90 = uVar6; unk0x90++;
|
||||
*unk0x90 = -fVar2; unk0x90++;
|
||||
*unk0x90 = fVar1; unk0x90++;
|
||||
*unk0x90 = uVar6; unk0x90++;
|
||||
*unk0x90 = fVar4; unk0x90++;
|
||||
*unk0x90 = fVar5; unk0x90++;
|
||||
*unk0x90 = fVar3; unk0x90++;
|
||||
*unk0x90 = fVar4; unk0x90++;
|
||||
*unk0x90 = -fVar5; unk0x90++;
|
||||
*unk0x90 = fVar3; unk0x90++;
|
||||
*unk0x90 = -fVar4; unk0x90++;
|
||||
*unk0x90 = -fVar5; unk0x90++;
|
||||
*unk0x90 = fVar3; unk0x90++;
|
||||
*unk0x90 = -fVar4; unk0x90++;
|
||||
*unk0x90 = fVar5; unk0x90++;
|
||||
*unk0x90 = fVar3;
|
||||
// clang-format on
|
||||
|
||||
FUN_100a6b90();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100a6b90
|
||||
void ViewManager::FUN_100a6b90()
|
||||
{
|
||||
|
|
|
@ -28,8 +28,10 @@ class ViewManager {
|
|||
ViewROI* Pick(Tgl::View* p_view, unsigned long x, unsigned long y);
|
||||
void SetResolution(int width, int height);
|
||||
void SetFrustrum(float fov, float front, float back);
|
||||
void FUN_100a66f0(ViewROI* p_roi, undefined4 p_und);
|
||||
void Update(float p_previousRenderTime, float);
|
||||
inline int Unknown();
|
||||
void FUN_100a6b90();
|
||||
void Update(float p_previousRenderTime, float p_und2);
|
||||
|
||||
// SYNTHETIC: LEGO1 0x100a6000
|
||||
// ViewManager::`scalar deleting destructor'
|
||||
|
@ -44,7 +46,7 @@ class ViewManager {
|
|||
RealtimeView rt_view; // 0x14
|
||||
ROIList visible_rois; // 0x18
|
||||
float unk0x28; // 0x28
|
||||
undefined4 unk0x2c; // 0x2c
|
||||
float unk0x2c; // 0x2c
|
||||
unsigned int flags; // 0x30
|
||||
float width; // 0x34
|
||||
float height; // 0x38
|
||||
|
|
Loading…
Reference in a new issue