private static void UpdateSelection(UnityEngine.Object[] existingSelection, UnityEngine.Object newObject, RectSelection.SelectionType type, bool isRectSelection) { UnityEngine.Object[] newObjects; if (newObject == null) { newObjects = new UnityEngine.Object[0]; } else { newObjects = new UnityEngine.Object[] { newObject }; } RectSelection.UpdateSelection(existingSelection, newObjects, type, isRectSelection); }
private static void UpdateSelection(UnityEngine.Object[] existingSelection, UnityEngine.Object[] newObjects, RectSelection.SelectionType type, bool isRectSelection) { switch (type) { case RectSelection.SelectionType.Additive: if (newObjects.Length > 0) { UnityEngine.Object[] array = new UnityEngine.Object[existingSelection.Length + newObjects.Length]; Array.Copy(existingSelection, array, existingSelection.Length); for (int i = 0; i < newObjects.Length; i++) { array[existingSelection.Length + i] = newObjects[i]; } if (!isRectSelection) { Selection.activeObject = newObjects[0]; } else { Selection.activeObject = array[0]; } Selection.objects = array; } else { Selection.objects = existingSelection; } return; case RectSelection.SelectionType.Subtractive: { Dictionary <UnityEngine.Object, bool> dictionary = new Dictionary <UnityEngine.Object, bool>(existingSelection.Length); for (int j = 0; j < existingSelection.Length; j++) { UnityEngine.Object key = existingSelection[j]; dictionary.Add(key, false); } for (int k = 0; k < newObjects.Length; k++) { UnityEngine.Object key2 = newObjects[k]; if (dictionary.ContainsKey(key2)) { dictionary.Remove(key2); } } UnityEngine.Object[] array = new UnityEngine.Object[dictionary.Keys.Count]; dictionary.Keys.CopyTo(array, 0); Selection.objects = array; return; } } Selection.objects = newObjects; }
private static void UpdateSelection(UnityEngine.Object[] existingSelection, UnityEngine.Object[] newObjects, RectSelection.SelectionType type, bool isRectSelection) { switch (type) { case RectSelection.SelectionType.Additive: if (newObjects.Length > 0) { UnityEngine.Object[] objectArray = new UnityEngine.Object[existingSelection.Length + newObjects.Length]; Array.Copy((Array)existingSelection, (Array)objectArray, existingSelection.Length); for (int index = 0; index < newObjects.Length; ++index) { objectArray[existingSelection.Length + index] = newObjects[index]; } Selection.activeObject = isRectSelection ? objectArray[0] : newObjects[0]; Selection.objects = objectArray; break; } Selection.objects = existingSelection; break; case RectSelection.SelectionType.Subtractive: Dictionary <UnityEngine.Object, bool> dictionary = new Dictionary <UnityEngine.Object, bool>(existingSelection.Length); foreach (UnityEngine.Object key in existingSelection) { dictionary.Add(key, false); } foreach (UnityEngine.Object newObject in newObjects) { if (dictionary.ContainsKey(newObject)) { dictionary.Remove(newObject); } } UnityEngine.Object[] array = new UnityEngine.Object[dictionary.Keys.Count]; dictionary.Keys.CopyTo(array, 0); Selection.objects = array; break; default: Selection.objects = newObjects; break; } }