#include "GUIControl.h" CGUIControl::CGUIControl() { m_invalidated = true; m_visible = true; m_forceUpdateFinalTransform = true; } bool CGUIControl::Update(const TransformMatrix &origin, bool originChanged, CDrawRegion ®ion, const float &frameTime) { if (m_invalidated) { m_invalidated = false; m_lastRender = m_currentRender; m_currentRender.Reset(); if (originChanged || Animate(frameTime) || m_forceUpdateFinalTransform) { m_finalTransform = origin * m_relativeTransform; m_forceUpdateFinalTransform = false; } // Add old region to clean up region.AddRegion(m_lastRender); UpdateVisibility(); // If control is visible, add new region for redraw if (m_visible) m_currentRender = region.AddRegion(m_finalTransform, m_width, m_height); m_temporaryRender = CDrawRegion(m_lastRender); m_temporaryRender.AddRegion(m_currentRender); return true; } return false; } bool CGUIControl::Animate(const float &frameTime) { return false; } void CGUIControl::Draw(CGraphicContext &context, CDrawRegion ®ion) { // if (m_temporaryRegion.Intersect(region).ContainsRegion()) // { InternalDraw(context); /* Old temporaryRender could have contained old clearing viewport so now its surely cleared so we force temporaryRender to only contain the currentRenderer. */ m_temporaryRender = m_lastRender = m_currentRender; // } } void CGUIControl::Invalidate(float scheduledTime) { // if (scheduledTime == SCHEDULE_ASAP) m_invalidated = true; // else // m_root.Invalidate(this, scheduledTime); } void CGUIControl::SetOrigin(const TransformMatrix &origin) { m_origin = origin; m_relativeTransform = m_origin; m_forceUpdateFinalTransform = true; Invalidate(); } void CGUIControl::UpdateVisibility() { }