2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-09 11:47:43 +00:00

Several architectural fixes and additions

This commit is contained in:
Jack Andersen
2017-01-21 15:40:12 -10:00
parent 00247ca53e
commit 0744a2307a
68 changed files with 508 additions and 586 deletions

View File

@@ -46,11 +46,11 @@ void CGuiCamera::Draw(const CGuiWidgetDrawParms& parms) const
CGuiWidget::Draw(parms);
}
CGuiCamera* CGuiCamera::Create(CGuiFrame* frame, CInputStream& in, bool flag)
std::shared_ptr<CGuiWidget> CGuiCamera::Create(CGuiFrame* frame, CInputStream& in, CSimplePool* sp)
{
CGuiWidgetParms parms = ReadWidgetHeader(frame, in, flag);
CGuiWidgetParms parms = ReadWidgetHeader(frame, in);
EProjection proj = EProjection(in.readUint32Big());
CGuiCamera* ret = nullptr;
std::shared_ptr<CGuiCamera> ret = {};
switch (proj)
{
case EProjection::Perspective:
@@ -59,7 +59,7 @@ CGuiCamera* CGuiCamera::Create(CGuiFrame* frame, CInputStream& in, bool flag)
float aspect = in.readFloatBig();
float znear = in.readFloatBig();
float zfar = in.readFloatBig();
ret = new CGuiCamera(parms, fov, aspect, znear, zfar);
ret = std::make_shared<CGuiCamera>(parms, fov, aspect, znear, zfar);
break;
}
case EProjection::Orthographic:
@@ -70,12 +70,13 @@ CGuiCamera* CGuiCamera::Create(CGuiFrame* frame, CInputStream& in, bool flag)
float bottom = in.readFloatBig();
float znear = in.readFloatBig();
float zfar = in.readFloatBig();
ret = new CGuiCamera(parms, left, right, top, bottom, znear, zfar);
ret = std::make_shared<CGuiCamera>(parms, left, right, top, bottom, znear, zfar);
break;
}
break;
}
frame->SetFrameCamera(ret);
frame->SetFrameCamera(ret->shared_from_this());
ret->ParseBaseInfo(frame, in, parms);
return ret;
}