port from perforce

This commit is contained in:
2026-04-18 22:31:51 +02:00
commit 8d0ab5b7cc
8409 changed files with 3972376 additions and 0 deletions

View 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();
}