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