2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-09 13:07:42 +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

@@ -19,7 +19,7 @@ CGuiWidget::CGuiWidget(const CGuiWidgetParms& parms)
}
CGuiWidget::CGuiWidgetParms
CGuiWidget::ReadWidgetHeader(CGuiFrame* frame, CInputStream& in, bool flag)
CGuiWidget::ReadWidgetHeader(CGuiFrame* frame, CInputStream& in)
{
std::string name = in.readString(-1);
s16 selfId = frame->GetWidgetIdDB().AddWidget(name);
@@ -36,13 +36,13 @@ CGuiWidget::ReadWidgetHeader(CGuiFrame* frame, CInputStream& in, bool flag)
return CGuiWidget::CGuiWidgetParms(frame, useAnimController, selfId,
parentId, defaultVis, defaultActive,
cullFaces, color, df, true, flag);
cullFaces, color, df, true, false);
}
CGuiWidget* CGuiWidget::Create(CGuiFrame* frame, CInputStream& in, bool flag)
std::shared_ptr<CGuiWidget> CGuiWidget::Create(CGuiFrame* frame, CInputStream& in, CSimplePool* sp)
{
CGuiWidgetParms parms = ReadWidgetHeader(frame, in, flag);
CGuiWidget* ret = new CGuiWidget(parms);
CGuiWidgetParms parms = ReadWidgetHeader(frame, in);
std::shared_ptr<CGuiWidget> ret = std::make_shared<CGuiWidget>(parms);
ret->ParseBaseInfo(frame, in, parms);
return ret;
}
@@ -54,26 +54,25 @@ void CGuiWidget::Initialize()
void CGuiWidget::ParseBaseInfo(CGuiFrame* frame, CInputStream& in, const CGuiWidgetParms& parms)
{
CGuiWidget* parent = frame->FindWidget(parms.x8_parentId);
bool a = in.readBool();
if (a)
bool isWorker = in.readBool();
if (isWorker)
xb4_workerId = in.readInt16Big();
zeus::CVector3f trans;
trans.readBig(in);
zeus::CMatrix3f orient;
orient.readBig(in);
zeus::CVector3f trans = zeus::CVector3f::ReadBig(in);
zeus::CMatrix3f orient = zeus::CMatrix3f::ReadBig(in);
x74_transform = zeus::CTransform(orient, trans);
ReapplyXform();
zeus::CVector3f rotCenter;
rotCenter.readBig(in);
SetRotationCenter(rotCenter);
zeus::CVector3f::ReadBig(in);
in.readUint32Big();
in.readUint16Big();
if (a)
if (isWorker)
{
if (!parent->AddWorkerWidget(this))
{
Log.report(logvisor::Warning,
"Warning: Discarding useless worker id. Parent is not a compound widget.");
xb4_workerId = -1;
}
}
parent->AddChildWidget(this, false, true);
}