public override MeshSelection Unselect(Material material) { MeshSelection selection = IMeshEditorExt.Select(material); selection.Invert(); m_faceSelection.BeginChange(); foreach (KeyValuePair <ProBuilderMesh, IList <int> > kvp in selection.UnselectedFaces.ToArray()) { IList <int> faces = kvp.Value; for (int i = faces.Count - 1; i >= 0; i--) { int face = faces[i]; if (!m_faceSelection.IsSelected(face)) { faces.Remove(face); } else { m_faceSelection.Remove(face); } } if (faces.Count == 0) { selection.UnselectedFaces.Remove(kvp.Key); } } m_faceSelection.EndChange(); if (selection.UnselectedFaces.Count == 0) { return(null); } return(selection); }