port from perforce
This commit is contained in:
57
aiwaz/Aiwaz/Commands/CommandUserBase.cpp
Normal file
57
aiwaz/Aiwaz/Commands/CommandUserBase.cpp
Normal file
@@ -0,0 +1,57 @@
|
||||
#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();
|
||||
}
|
||||
Reference in New Issue
Block a user