58 lines
1.3 KiB
C++
58 lines
1.3 KiB
C++
#include "stdafx.h"
|
|
#include <algorithm>
|
|
#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<Command*>& 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<IRenderCommandNode*>::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<CommandUserBase*>(this));
|
|
}
|
|
|
|
|
|
void CommandUserBase::MarkCommandsAsDirty()
|
|
{
|
|
for (uint32 i = 0; i < m_RenderCommandNodesIamAssignedTo.size(); ++i)
|
|
m_RenderCommandNodesIamAssignedTo[i]->MarkDirty();
|
|
}
|