private void HandlePackableListUI() { var currentEvent = Event.current; var usedEvent = false; Rect rect = EditorGUILayout.GetControlRect(); var controlID = EditorGUIUtility.s_LastControlID; switch (currentEvent.type) { case EventType.DragExited: if (GUI.enabled) { HandleUtility.Repaint(); } break; case EventType.DragUpdated: case EventType.DragPerform: if (rect.Contains(currentEvent.mousePosition) && GUI.enabled) { // Check each single object, so we can add multiple objects in a single drag. var didAcceptDrag = false; var references = DragAndDrop.objectReferences; foreach (var obj in references) { if (IsPackable(obj)) { DragAndDrop.visualMode = DragAndDropVisualMode.Copy; if (currentEvent.type == EventType.DragPerform) { m_Packables.AppendFoldoutPPtrValue(obj); didAcceptDrag = true; DragAndDrop.activeControlID = 0; } else { DragAndDrop.activeControlID = controlID; } } } if (didAcceptDrag) { GUI.changed = true; DragAndDrop.AcceptDrag(); usedEvent = true; } } break; case EventType.ValidateCommand: if (currentEvent.commandName == ObjectSelector.ObjectSelectorClosedCommand && ObjectSelector.get.objectSelectorID == styles.packableSelectorHash) { usedEvent = true; } break; case EventType.ExecuteCommand: if (currentEvent.commandName == ObjectSelector.ObjectSelectorClosedCommand && ObjectSelector.get.objectSelectorID == styles.packableSelectorHash) { var obj = ObjectSelector.GetCurrentObject(); if (IsPackable(obj)) { m_Packables.AppendFoldoutPPtrValue(obj); m_PackableList.index = m_Packables.arraySize - 1; } usedEvent = true; } break; } // Handle Foldout after we handle the current event because Foldout might process the drag and drop event and used it. m_PackableListExpanded = EditorGUI.Foldout(rect, m_PackableListExpanded, styles.packableListLabel, true); if (usedEvent) { currentEvent.Use(); } if (m_PackableListExpanded) { EditorGUI.indentLevel++; m_PackableList.DoLayoutList(); EditorGUI.indentLevel--; } }
private void HandlePackableListUI() { Event current = Event.current; bool flag = false; Rect controlRect = EditorGUILayout.GetControlRect(new GUILayoutOption[0]); int s_LastControlID = EditorGUIUtility.s_LastControlID; switch (current.type) { case EventType.DragUpdated: case EventType.DragPerform: if (controlRect.Contains(current.mousePosition) && GUI.enabled) { bool flag2 = false; UnityEngine.Object[] objectReferences = DragAndDrop.objectReferences; UnityEngine.Object[] array = objectReferences; for (int i = 0; i < array.Length; i++) { UnityEngine.Object @object = array[i]; if (SpriteAtlasInspector.IsPackable(@object)) { DragAndDrop.visualMode = DragAndDropVisualMode.Copy; if (current.type == EventType.DragPerform) { this.m_Packables.AppendFoldoutPPtrValue(@object); flag2 = true; DragAndDrop.activeControlID = 0; } else { DragAndDrop.activeControlID = s_LastControlID; } } } if (flag2) { GUI.changed = true; DragAndDrop.AcceptDrag(); flag = true; } } break; case EventType.ValidateCommand: if (current.commandName == "ObjectSelectorClosed" && ObjectSelector.get.objectSelectorID == SpriteAtlasInspector.s_Styles.packableSelectorHash) { flag = true; } break; case EventType.ExecuteCommand: if (current.commandName == "ObjectSelectorClosed" && ObjectSelector.get.objectSelectorID == SpriteAtlasInspector.s_Styles.packableSelectorHash) { UnityEngine.Object currentObject = ObjectSelector.GetCurrentObject(); if (SpriteAtlasInspector.IsPackable(currentObject)) { this.m_Packables.AppendFoldoutPPtrValue(currentObject); this.m_PackableList.index = this.m_Packables.arraySize - 1; } flag = true; } break; case EventType.DragExited: if (GUI.enabled) { HandleUtility.Repaint(); } break; } this.m_PackableListExpanded = EditorGUI.Foldout(controlRect, this.m_PackableListExpanded, SpriteAtlasInspector.s_Styles.packableListLabel, true); if (flag) { current.Use(); } if (this.m_PackableListExpanded) { EditorGUI.indentLevel++; this.m_PackableList.DoLayoutList(); EditorGUI.indentLevel--; } }