Exemple #1
0
void CommandGroup::CancelConflicts(Command *command)
{
	CommandList::iterator childIter = m_children.begin();
	for (; childIter != m_children.end();)
	{
		Command *child = childIter->m_command;
		bool erased = false;

		Command::SubsystemSet requirements = command->GetRequirements();
		Command::SubsystemSet::iterator requirementIter = requirements.begin();
		for (; requirementIter != requirements.end(); requirementIter++)
		{
			if (child->DoesRequire(*requirementIter))
			{
				child->_Cancel();
				child->Removed();
				childIter = m_children.erase(childIter);
				erased = true;
				break;
			}
		}
		if (!erased)
			childIter++;
	}
}