#include "stdafx.h" #include #include "CommandUserBase.h" CommandUserBase::CommandUserBase() { } CommandUserBase::~CommandUserBase() { this->UnassignFromSceneNodes(); while (!m_Commands.empty()) { delete m_Commands[0]; m_Commands.erase(m_Commands.begin()); } } const std::vector& CommandUserBase::GetCommands() const { return m_Commands; } void CommandUserBase::AssignToRenderCommandNode(IRenderCommandNode& argNode) { m_RenderCommandNodesIamAssignedTo.push_back(&argNode); argNode.MarkDirty(); } void CommandUserBase::UnassignFromRenderCommandNode(IRenderCommandNode& argNode) { std::vector::iterator found = std::find(m_RenderCommandNodesIamAssignedTo.begin(), m_RenderCommandNodesIamAssignedTo.end(), &argNode); if (found != m_RenderCommandNodesIamAssignedTo.end()) { m_RenderCommandNodesIamAssignedTo.erase(found); argNode.MarkDirty(); } } void CommandUserBase::UnassignFromSceneNodes() { while (!m_RenderCommandNodesIamAssignedTo.empty()) m_RenderCommandNodesIamAssignedTo.back()->RemoveCommandUser(*const_cast(this)); } void CommandUserBase::MarkCommandsAsDirty() { for (uint32 i = 0; i < m_RenderCommandNodesIamAssignedTo.size(); ++i) m_RenderCommandNodesIamAssignedTo[i]->MarkDirty(); }