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++; } }