#include "Runtime/GuiSys/CGuiPane.hpp" namespace metaforce { CGuiPane::CGuiPane(const CGuiWidgetParms& parms, const zeus::CVector2f& dim, const zeus::CVector3f& scaleCenter) : CGuiWidget(parms), xb8_dim(dim), xc8_scaleCenter(scaleCenter) { CGuiPane::InitializeBuffers(); } void CGuiPane::ScaleDimensions(const zeus::CVector3f& scale) { InitializeBuffers(); for (TexShaderVert& v : xc0_verts) { v.m_pos -= xc8_scaleCenter; v.m_pos *= scale; v.m_pos += xc8_scaleCenter; } } void CGuiPane::SetDimensions(const zeus::CVector2f& dim, bool initVBO) { xb8_dim = dim; if (initVBO) InitializeBuffers(); } zeus::CVector2f CGuiPane::GetDimensions() const { return xb8_dim; } void CGuiPane::InitializeBuffers() { if (xc0_verts.size() < 4) xc0_verts.resize(4); xc0_verts[0].m_pos.assign(-xb8_dim.x() * 0.5f, 0.f, xb8_dim.y() * 0.5f); xc0_verts[1].m_pos.assign(-xb8_dim.x() * 0.5f, 0.f, -xb8_dim.y() * 0.5f); xc0_verts[2].m_pos.assign(xb8_dim.x() * 0.5f, 0.f, xb8_dim.y() * 0.5f); xc0_verts[3].m_pos.assign(xb8_dim.x() * 0.5f, 0.f, -xb8_dim.y() * 0.5f); } void CGuiPane::WriteData(COutputStream& out, bool flag) const {} std::shared_ptr CGuiPane::Create(CGuiFrame* frame, CInputStream& in, CSimplePool* sp) { CGuiWidgetParms parms = ReadWidgetHeader(frame, in); zeus::CVector2f dim = zeus::CVector2f::ReadBig(in); zeus::CVector3f scaleCenter = zeus::CVector3f::ReadBig(in); std::shared_ptr ret = std::make_shared(parms, dim, scaleCenter); ret->ParseBaseInfo(frame, in, parms); return ret; } } // namespace metaforce