Widget * Gui::CreateWidget(const Widget::WidgetDef & a_def, Widget * a_parent, bool a_startActive) { // Check for a valid parent if (a_parent == NULL) { Log::Get().Write(LogLevel::Error, LogCategory::Engine, "Widget creation failed due to an invalid parent."); return NULL; } // Copy properties over to the managed element Widget * newWidget = new Widget(); newWidget->SetName(a_def.m_name); newWidget->SetColour(a_def.m_colour); newWidget->SetSize(a_def.m_size); newWidget->SetOffset(a_def.m_pos); newWidget->SetAlignment(a_def.m_pos.GetAlignment()); newWidget->SetAlignmentAnchor(a_def.m_pos.GetAlignmentAnchor()); newWidget->SetFontName(a_def.m_fontNameHash); newWidget->SetFontSize(a_def.m_fontSize <= 0.5f ? 1.0f : a_def.m_fontSize); newWidget->SetSelectFlags(a_def.m_selectFlags); newWidget->SetActive(a_startActive); a_parent->AddChild(newWidget); return newWidget; }