/// <summary> /// Disconnects the group from all imports and exports. /// </summary> /// <param name="group">The composition ID of the group.</param> public void Disconnect(GroupCompositionId group) { if ((group == null) || !m_GroupConnections.ContainsVertex(group)) { return; } var matchingExports = m_GroupConnections .InEdges(group) .Select(edge => new Tuple <GroupCompositionId, GroupImportDefinition>(edge.Source, edge.Import)); foreach (var pair in matchingExports) { DisconnectParts(group, pair.Item2, pair.Item1); } var matchingImports = m_GroupConnections .OutEdges(group) .Select(edge => new Tuple <GroupCompositionId, GroupImportDefinition>(edge.Target, edge.Import)); foreach (var pair in matchingImports) { DisconnectParts(pair.Item1, pair.Item2, group); } m_GroupConnections.RemoveInEdgeIf(group, edge => true); m_GroupConnections.RemoveOutEdgeIf(group, edge => true); }
private void DisconnectPartInstanceFromImportingParts(PartCompositionId partId) { var importingParts = m_PartConnections .OutEdges(partId) .Select(edge => new Tuple <PartCompositionId, ImportRegistrationId>(edge.Target, edge.ImportRegistration)); foreach (var pair in importingParts) { DisconnectInstanceFromExport(pair.Item1, pair.Item2, partId); } }