Get data associated with current drag and drop operation.
public override DragAndDropVisualMode DoDrag(TreeViewItem parentNode, TreeViewItem targetNode, bool perform, TreeViewDragging.DropPosition dragPos) { DragData genericData = DragAndDrop.GetGenericData("AudioMixerDragging") as DragData; if (genericData != null) { List <AudioMixerItem> draggedItems = genericData.m_DraggedItems; AudioMixerItem item = parentNode as AudioMixerItem; if ((item != null) && (genericData != null)) { if (< > f__am$cache0 == null) {
public override DragAndDropVisualMode DoDrag(TreeViewItem parentItem, TreeViewItem targetItem, bool perform, TreeViewDragging.DropPosition dropPos) { FooDragData genericData = DragAndDrop.GetGenericData("FooDragging") as FooDragData; TreeViewTest.FooTreeViewItem item = targetItem as TreeViewTest.FooTreeViewItem; TreeViewTest.FooTreeViewItem item2 = parentItem as TreeViewTest.FooTreeViewItem; if ((item2 == null) || (genericData == null)) { return(DragAndDropVisualMode.None); } bool flag = this.ValidDrag(parentItem, genericData.m_DraggedItems); if (perform && flag) { if (< > f__am$cache1 == null) {
public override DragAndDropVisualMode DoDrag(TreeViewItem parentItem, TreeViewItem targetItem, bool perform, TreeViewDragging.DropPosition dropPos) { TreeViewTest.TestDragging.FooDragData fooDragData = DragAndDrop.GetGenericData("FooDragging") as TreeViewTest.TestDragging.FooDragData; TreeViewTest.FooTreeViewItem fooTreeViewItem = targetItem as TreeViewTest.FooTreeViewItem; TreeViewTest.FooTreeViewItem fooTreeViewItem2 = parentItem as TreeViewTest.FooTreeViewItem; if (fooTreeViewItem2 != null && fooDragData != null) { bool flag = this.ValidDrag(parentItem, fooDragData.m_DraggedItems); if (perform && flag) { List <TreeViewTest.BackendData.Foo> draggedItems = ( from x in fooDragData.m_DraggedItems where x is TreeViewTest.FooTreeViewItem select((TreeViewTest.FooTreeViewItem)x).foo).ToList <TreeViewTest.BackendData.Foo>(); this.m_BackendData.ReparentSelection(fooTreeViewItem2.foo, fooTreeViewItem.foo, draggedItems); this.m_TreeView.ReloadData(); } return((!flag) ? DragAndDropVisualMode.None : DragAndDropVisualMode.Move); } return(DragAndDropVisualMode.None); }
public override bool DragElement(TreeViewItem targetItem, Rect targetItemRect, int row) { // First ensure we are dragging AudioMixers (and not some other objects) var dragData = DragAndDrop.GetGenericData(k_AudioMixerDraggingID) as DragData; if (dragData == null) { DragAndDrop.visualMode = DragAndDropVisualMode.None; return(false); } // Handle the case where we hover inside the treeview rect but not over any items bool isDraggingOverEmptyArea = targetItem == null; if (isDraggingOverEmptyArea && m_TreeView.GetTotalRect().Contains(Event.current.mousePosition)) { if (m_DropData != null) { // Ensure no rendering of target items m_DropData.dropTargetControlID = 0; m_DropData.rowMarkerControlID = 0; } if (Event.current.type == EventType.DragPerform) { DragAndDrop.AcceptDrag(); if (m_MixersDroppedOnMixerCallback != null) { m_MixersDroppedOnMixerCallback(GetAudioMixersFromItems(dragData.m_DraggedItems), null); } } DragAndDrop.visualMode = DragAndDropVisualMode.Move; Event.current.Use(); return(false); } // Normal handling when over dragging over items return(base.DragElement(targetItem, targetItemRect, row)); }
public override bool DragElement(TreeViewItem targetItem, Rect targetItemRect, int row) { AudioMixerTreeViewDragging.DragData dragData = DragAndDrop.GetGenericData("AudioMixerDragging") as AudioMixerTreeViewDragging.DragData; bool result; if (dragData == null) { DragAndDrop.visualMode = DragAndDropVisualMode.None; result = false; } else { bool flag = targetItem == null; if (flag && this.m_TreeView.GetTotalRect().Contains(Event.current.mousePosition)) { if (this.m_DropData != null) { this.m_DropData.dropTargetControlID = 0; this.m_DropData.rowMarkerControlID = 0; } if (Event.current.type == EventType.DragPerform) { DragAndDrop.AcceptDrag(); if (this.m_MixersDroppedOnMixerCallback != null) { this.m_MixersDroppedOnMixerCallback(this.GetAudioMixersFromItems(dragData.m_DraggedItems), null); } } DragAndDrop.visualMode = DragAndDropVisualMode.Move; Event.current.Use(); result = false; } else { result = base.DragElement(targetItem, targetItemRect, row); } } return(result); }
public override DragAndDropVisualMode DoDrag(TreeViewItem parentNode, TreeViewItem targetNode, bool perform, TreeViewDragging.DropPosition dragPos) { AudioMixerTreeViewDragging.DragData dragData = DragAndDrop.GetGenericData("AudioMixerDragging") as AudioMixerTreeViewDragging.DragData; DragAndDropVisualMode result; if (dragData == null) { result = DragAndDropVisualMode.None; } else { List <AudioMixerItem> draggedItems = dragData.m_DraggedItems; AudioMixerItem audioMixerItem = parentNode as AudioMixerItem; if (audioMixerItem != null && dragData != null) { List <AudioMixerGroupController> groupsToBeMoved = (from i in draggedItems select i.mixer.masterGroup).ToList <AudioMixerGroupController>(); List <AudioMixerGroupController> allAudioGroupsSlow = audioMixerItem.mixer.GetAllAudioGroupsSlow(); bool flag = AudioMixerController.WillModificationOfTopologyCauseFeedback(allAudioGroupsSlow, groupsToBeMoved, audioMixerItem.mixer.masterGroup, null); bool flag2 = this.ValidDrag(parentNode, draggedItems) && !flag; if (perform && flag2) { if (this.m_MixersDroppedOnMixerCallback != null) { this.m_MixersDroppedOnMixerCallback(this.GetAudioMixersFromItems(draggedItems), audioMixerItem.mixer); } } result = ((!flag2) ? DragAndDropVisualMode.Rejected : DragAndDropVisualMode.Move); } else { result = DragAndDropVisualMode.None; } } return(result); }
public override DragAndDropVisualMode DoDrag(TreeViewItem parentNode, TreeViewItem targetNode, bool perform, TreeViewDragging.DropPosition dragPos) { AudioMixerTreeViewDragging.DragData genericData = DragAndDrop.GetGenericData("AudioMixerDragging") as AudioMixerTreeViewDragging.DragData; if (genericData == null) { return(DragAndDropVisualMode.None); } List <AudioMixerItem> draggedItems = genericData.m_DraggedItems; AudioMixerItem audioMixerItem = parentNode as AudioMixerItem; if (audioMixerItem == null || genericData == null) { return(DragAndDropVisualMode.None); } List <AudioMixerGroupController> list = draggedItems.Select <AudioMixerItem, AudioMixerGroupController>((Func <AudioMixerItem, AudioMixerGroupController>)(i => i.mixer.masterGroup)).ToList <AudioMixerGroupController>(); bool flag1 = AudioMixerController.WillModificationOfTopologyCauseFeedback(audioMixerItem.mixer.GetAllAudioGroupsSlow(), list, audioMixerItem.mixer.masterGroup, (List <AudioMixerController.ConnectionNode>)null); bool flag2 = this.ValidDrag(parentNode, draggedItems) && !flag1; if (perform && flag2 && this.m_MixersDroppedOnMixerCallback != null) { this.m_MixersDroppedOnMixerCallback(this.GetAudioMixersFromItems(draggedItems), audioMixerItem.mixer); } return(flag2 ? DragAndDropVisualMode.Move : DragAndDropVisualMode.Rejected); }
protected override DragAndDropVisualMode HandleDragAndDrop(DragAndDropArgs args) { DragAndDropVisualMode visualMode = DragAndDropVisualMode.None; var draggedIDs = DragAndDrop.GetGenericData("BuildPlayerSceneTreeViewItem") as List <int>; if (draggedIDs != null && draggedIDs.Count > 0) { visualMode = DragAndDropVisualMode.Move; if (args.performDrop) { int newIndex = FindDropAtIndex(args); var result = new List <TreeViewItem>(); int toInsert = 0; foreach (var item in rootItem.children) { if (toInsert == newIndex) { foreach (var id in draggedIDs) { result.Add(FindItem(id, rootItem)); } } toInsert++; if (!draggedIDs.Contains(item.id)) { result.Add(item); } } if (result.Count < rootItem.children.Count) //must be appending. { foreach (var id in draggedIDs) { result.Add(FindItem(id, rootItem)); } } rootItem.children = result; EditorBuildSettings.scenes = GetSceneList(); ReloadAndSelect(draggedIDs); Repaint(); } } else if (DragAndDrop.paths != null && DragAndDrop.paths.Length > 0) { visualMode = DragAndDropVisualMode.Copy; if (args.performDrop) { var scenes = new List <EditorBuildSettingsScene>(EditorBuildSettings.scenes); var scenesToAdd = new List <EditorBuildSettingsScene>(); var selection = new List <int>(); foreach (var path in DragAndDrop.paths) { if (AssetDatabase.GetMainAssetTypeAtPath(path) == typeof(SceneAsset)) { var guid = new GUID(AssetDatabase.AssetPathToGUID(path)); selection.Add(guid.GetHashCode()); bool unique = true; foreach (var scene in scenes) { if (scene.path == path) { unique = false; break; } } if (unique) { scenesToAdd.Add(new EditorBuildSettingsScene(path, true)); } } } int newIndex = FindDropAtIndex(args); scenes.InsertRange(newIndex, scenesToAdd); EditorBuildSettings.scenes = scenes.ToArray(); ReloadAndSelect(selection); Repaint(); } } return(visualMode); }
public override DragAndDropVisualMode DoDrag(TreeViewItem parentItem, TreeViewItem targetItem, bool perform, TreeViewDragging.DropPosition dropPos) { if (targetItem == null) { return(DragAndDropVisualMode.None); } object genericData = DragAndDrop.GetGenericData(ProjectWindowUtil.k_DraggingFavoriteGenericData); if (genericData != null) { int instanceID = (int)genericData; if (targetItem is SearchFilterTreeItem && parentItem is SearchFilterTreeItem) { bool flag = SavedSearchFilters.CanMoveSavedFilter(instanceID, parentItem.id, targetItem.id, true); if (flag && perform) { SavedSearchFilters.MoveSavedFilter(instanceID, parentItem.id, targetItem.id, true); } return((!flag) ? DragAndDropVisualMode.None : DragAndDropVisualMode.Copy); } return(DragAndDropVisualMode.None); } else { if (!(targetItem is SearchFilterTreeItem) || !(parentItem is SearchFilterTreeItem)) { return(base.DoDrag(parentItem, targetItem, perform, dropPos)); } string a = DragAndDrop.GetGenericData(ProjectWindowUtil.k_IsFolderGenericData) as string; if (a == "isFolder") { if (perform) { UnityEngine.Object[] objectReferences = DragAndDrop.objectReferences; if (objectReferences.Length > 0) { HierarchyProperty hierarchyProperty = new HierarchyProperty(HierarchyType.Assets); if (hierarchyProperty.Find(objectReferences[0].GetInstanceID(), null)) { SearchFilter searchFilter = new SearchFilter(); string assetPath = AssetDatabase.GetAssetPath(hierarchyProperty.instanceID); if (!string.IsNullOrEmpty(assetPath)) { searchFilter.folders = new string[] { assetPath }; bool addAsChild = targetItem == parentItem; float listAreaGridSize = ProjectBrowserColumnOneTreeViewGUI.GetListAreaGridSize(); int activeInstanceID = SavedSearchFilters.AddSavedFilterAfterInstanceID(hierarchyProperty.name, searchFilter, listAreaGridSize, targetItem.id, addAsChild); Selection.activeInstanceID = activeInstanceID; } else { Debug.Log("Could not get asset path from id " + hierarchyProperty.name); } } } } return(DragAndDropVisualMode.Copy); } return(DragAndDropVisualMode.None); } }
public override DragAndDropVisualMode DoDrag(TreeViewItem parentItem, TreeViewItem targetItem, bool perform, DropPosition dropPos) { if (targetItem == null) { return(DragAndDropVisualMode.None); } object savedFilterData = DragAndDrop.GetGenericData(ProjectWindowUtil.k_DraggingFavoriteGenericData); // Dragging saved filter if (savedFilterData != null) { int instanceID = (int)savedFilterData; if (targetItem is SearchFilterTreeItem && parentItem is SearchFilterTreeItem)// && targetItem.id != draggedInstanceID && parentItem.id != draggedInstanceID) { bool validMove = SavedSearchFilters.CanMoveSavedFilter(instanceID, parentItem.id, targetItem.id, dropPos == DropPosition.Below); if (validMove && perform) { SavedSearchFilters.MoveSavedFilter(instanceID, parentItem.id, targetItem.id, dropPos == DropPosition.Below); m_TreeView.SetSelection(new[] { instanceID }, false); m_TreeView.NotifyListenersThatSelectionChanged(); } return(validMove ? DragAndDropVisualMode.Copy : DragAndDropVisualMode.None); } return(DragAndDropVisualMode.None); } // Dragging of folders into filters else { // Check if we are dragging a single folder if (targetItem is SearchFilterTreeItem && parentItem is SearchFilterTreeItem) { string genericData = DragAndDrop.GetGenericData(ProjectWindowUtil.k_IsFolderGenericData) as string; if (genericData == "isFolder") { if (perform) { Object[] objs = DragAndDrop.objectReferences; if (objs.Length > 0) { string path = AssetDatabase.GetAssetPath(objs[0].GetInstanceID()); if (!string.IsNullOrEmpty(path)) { // TODO: Fix with new AssetDatabase API when it is ready (GetName) string folderName = new DirectoryInfo(path).Name; SearchFilter searchFilter = new SearchFilter(); searchFilter.folders = new[] { path }; bool addAsChild = targetItem == parentItem; float previewSize = ProjectBrowserColumnOneTreeViewGUI.GetListAreaGridSize(); int instanceID = SavedSearchFilters.AddSavedFilterAfterInstanceID(folderName, searchFilter, previewSize, targetItem.id, addAsChild); m_TreeView.SetSelection(new[] { instanceID }, false); m_TreeView.NotifyListenersThatSelectionChanged(); } else { Debug.Log("Could not get asset path from id " + objs[0].GetInstanceID()); } } } return(DragAndDropVisualMode.Copy); // Allow dragging folders to filters } return(DragAndDropVisualMode.None); // Assets that are not folders are not allowed to be dragged to filters } } // Assets are handled by base return(base.DoDrag(parentItem, targetItem, perform, dropPos)); }
public override DragAndDropVisualMode DoDrag(TreeViewItem parentItem, TreeViewItem targetItem, bool perform, TreeViewDragging.DropPosition dropPos) { DragAndDropVisualMode result; if (targetItem == null) { result = DragAndDropVisualMode.None; } else { object genericData = DragAndDrop.GetGenericData(ProjectWindowUtil.k_DraggingFavoriteGenericData); if (genericData != null) { int num = (int)genericData; if (targetItem is SearchFilterTreeItem && parentItem is SearchFilterTreeItem) { bool flag = SavedSearchFilters.CanMoveSavedFilter(num, parentItem.id, targetItem.id, dropPos == TreeViewDragging.DropPosition.Below); if (flag && perform) { SavedSearchFilters.MoveSavedFilter(num, parentItem.id, targetItem.id, dropPos == TreeViewDragging.DropPosition.Below); this.m_TreeView.SetSelection(new int[] { num }, false); this.m_TreeView.NotifyListenersThatSelectionChanged(); } result = ((!flag) ? DragAndDropVisualMode.None : DragAndDropVisualMode.Copy); } else { result = DragAndDropVisualMode.None; } } else if (targetItem is SearchFilterTreeItem && parentItem is SearchFilterTreeItem) { string a = DragAndDrop.GetGenericData(ProjectWindowUtil.k_IsFolderGenericData) as string; if (a == "isFolder") { if (perform) { UnityEngine.Object[] objectReferences = DragAndDrop.objectReferences; if (objectReferences.Length > 0) { string assetPath = AssetDatabase.GetAssetPath(objectReferences[0].GetInstanceID()); if (!string.IsNullOrEmpty(assetPath)) { string name = new DirectoryInfo(assetPath).Name; SearchFilter searchFilter = new SearchFilter(); searchFilter.folders = new string[] { assetPath }; bool addAsChild = targetItem == parentItem; float listAreaGridSize = ProjectBrowserColumnOneTreeViewGUI.GetListAreaGridSize(); int num2 = SavedSearchFilters.AddSavedFilterAfterInstanceID(name, searchFilter, listAreaGridSize, targetItem.id, addAsChild); this.m_TreeView.SetSelection(new int[] { num2 }, false); this.m_TreeView.NotifyListenersThatSelectionChanged(); } else { Debug.Log("Could not get asset path from id " + objectReferences[0].GetInstanceID()); } } } result = DragAndDropVisualMode.Copy; } else { result = DragAndDropVisualMode.None; } } else { result = base.DoDrag(parentItem, targetItem, perform, dropPos); } } return(result); }
private DragAndDropVisualMode DoDragScenes(GameObjectTreeViewItem parentItem, GameObjectTreeViewItem targetItem, bool perform, DropPosition dropPos) { // We allow dragging SceneAssets on any game object in the Hierarchy to make it easy to drag in a Scene from // the project browser. If dragging on a game object (not a sceneheader) we place the dropped scene // below the game object's scene // Case: 1 List <Scene> scenes = DragAndDrop.GetGenericData(kSceneHeaderDragString) as List <Scene>; bool reorderExistingScenes = (scenes != null); // Case: 2 bool insertNewScenes = false; if (!reorderExistingScenes && DragAndDrop.objectReferences.Length > 0) { int sceneAssetCount = 0; foreach (var dragged in DragAndDrop.objectReferences) { if (dragged is SceneAsset) { sceneAssetCount++; } } insertNewScenes = (sceneAssetCount == DragAndDrop.objectReferences.Length); } // Early out if not case 1 or 2 if (!reorderExistingScenes && !insertNewScenes) { return(DragAndDropVisualMode.None); } if (perform) { List <Scene> scenesToBeMoved = null; if (insertNewScenes) { List <Scene> insertedScenes = new List <Scene>(); foreach (var sceneAsset in DragAndDrop.objectReferences) { string scenePath = AssetDatabase.GetAssetPath(sceneAsset); Scene scene = SceneManager.GetSceneByPath(scenePath); if (SceneHierarchy.IsSceneHeaderInHierarchyWindow(scene)) { m_TreeView.Frame(scene.handle, true, true); } else { bool unloaded = Event.current.alt; if (unloaded) { scene = EditorSceneManager.OpenScene(scenePath, OpenSceneMode.AdditiveWithoutLoading); } else { scene = EditorSceneManager.OpenScene(scenePath, OpenSceneMode.Additive); } if (SceneHierarchy.IsSceneHeaderInHierarchyWindow(scene)) { insertedScenes.Add(scene); } } } if (targetItem != null) { scenesToBeMoved = insertedScenes; } // Select added scenes and frame last scene if (insertedScenes.Count > 0) { Selection.instanceIDs = insertedScenes.Select(x => x.handle).ToArray(); m_TreeView.Frame(insertedScenes.Last().handle, true, false); } } else // reorderExistingScenes { scenesToBeMoved = scenes; } if (scenesToBeMoved != null) { if (targetItem != null) { Scene dstScene = targetItem.scene; if (SceneHierarchy.IsSceneHeaderInHierarchyWindow(dstScene)) { if (!targetItem.isSceneHeader || dropPos == DropPosition.Upon) { dropPos = DropPosition.Below; } if (dropPos == DropPosition.Above) { for (int i = 0; i < scenesToBeMoved.Count; i++) { EditorSceneManager.MoveSceneBefore(scenesToBeMoved[i], dstScene); } } else if (dropPos == DropPosition.Below) { for (int i = scenesToBeMoved.Count - 1; i >= 0; i--) { EditorSceneManager.MoveSceneAfter(scenesToBeMoved[i], dstScene); } } } } else { Scene dstScene = SceneManager.GetSceneAt(SceneManager.sceneCount - 1); for (int i = scenesToBeMoved.Count - 1; i >= 0; i--) { EditorSceneManager.MoveSceneAfter(scenesToBeMoved[i], dstScene); } } } } return(DragAndDropVisualMode.Move); }
public DragAndDropVisualMode HandleTrackDrop(TreeViewItem parentItem, TreeViewItem targetItem, bool perform, DropPosition dropPos) { ((TimelineTreeView)m_Window.treeView.gui).showInsertionMarker = false; var trackDragData = (TimelineDragData)DragAndDrop.GetGenericData(k_GenericDragId); bool validDrag = ValidDrag(targetItem, trackDragData.draggedItems); if (!validDrag) return DragAndDropVisualMode.None; var draggedTracks = trackDragData.draggedItems.OfType<TimelineGroupGUI>().Select(x => x.track).ToList(); if (draggedTracks.Count == 0) return DragAndDropVisualMode.None; if (parentItem != null) { var parentActor = parentItem as TimelineGroupGUI; if (parentActor != null && parentActor.track != null) { if (parentActor.track.lockedInHierarchy) return DragAndDropVisualMode.Rejected; if (draggedTracks.Any(x => !TimelineCreateUtilities.ValidateParentTrack(parentActor.track, x.GetType()))) return DragAndDropVisualMode.Rejected; } } var insertAfterItem = targetItem as TimelineGroupGUI; if (insertAfterItem != null && insertAfterItem.track != null) { ((TimelineTreeView)m_Window.treeView.gui).showInsertionMarker = true; } if (dropPos == DropPosition.Upon) { var groupGUI = targetItem as TimelineGroupGUI; if (groupGUI != null) groupGUI.isDropTarget = true; } if (perform) { PlayableAsset targetParent = m_Timeline; var parentActor = parentItem as TimelineGroupGUI; if (parentActor != null && parentActor.track != null) targetParent = parentActor.track; TrackAsset siblingTrack = insertAfterItem != null ? insertAfterItem.track : null; // where the user drops after the last track, make sure to place it after all the tracks if (targetParent == m_Timeline && dropPos == DropPosition.Below && siblingTrack == null) { siblingTrack = m_Timeline.GetRootTracks().LastOrDefault(x => !draggedTracks.Contains(x)); } if (TrackExtensions.ReparentTracks(TrackExtensions.FilterTracks(draggedTracks).ToList(), targetParent, siblingTrack, dropPos == DropPosition.Above)) { m_Window.state.Refresh(); } } return DragAndDropVisualMode.Move; }
private void HandleEditorDragging(int editorIndex, Rect targetRect, float markerY, bool bottomTarget, ActiveEditorTracker tracker) { Event current = Event.current; EventType type = current.type; switch (type) { case EventType.Repaint: if (this.m_TargetIndex != -1 && targetRect.Contains(current.mousePosition)) { Rect position = new Rect(targetRect.x, markerY, targetRect.width, 3f); if (!this.m_TargetAbove) { position.y += 2f; } EditorDragging.Styles.insertionMarker.Draw(position, false, false, false, false); } return; case EventType.Layout: IL_26: if (type != EventType.DragExited) { return; } this.m_TargetIndex = -1; return; case EventType.DragUpdated: if (targetRect.Contains(current.mousePosition)) { EditorDragging.DraggingMode?draggingMode = DragAndDrop.GetGenericData("InspectorEditorDraggingMode") as EditorDragging.DraggingMode?; if (!draggingMode.HasValue) { UnityEngine.Object[] objectReferences = DragAndDrop.objectReferences; if (objectReferences.Length == 0) { draggingMode = new EditorDragging.DraggingMode?(EditorDragging.DraggingMode.NotApplicable); } else if (objectReferences.All((UnityEngine.Object o) => o is Component && !(o is Transform))) { draggingMode = new EditorDragging.DraggingMode?(EditorDragging.DraggingMode.Component); } else if (objectReferences.All((UnityEngine.Object o) => o is MonoScript)) { draggingMode = new EditorDragging.DraggingMode?(EditorDragging.DraggingMode.Script); } else { draggingMode = new EditorDragging.DraggingMode?(EditorDragging.DraggingMode.NotApplicable); } DragAndDrop.SetGenericData("InspectorEditorDraggingMode", draggingMode); } if (draggingMode.Value != EditorDragging.DraggingMode.NotApplicable) { Editor[] activeEditors = tracker.activeEditors; UnityEngine.Object[] objectReferences2 = DragAndDrop.objectReferences; if (bottomTarget) { this.m_TargetAbove = false; this.m_TargetIndex = this.m_LastIndex; } else { this.m_TargetAbove = (current.mousePosition.y < targetRect.y + targetRect.height / 2f); this.m_TargetIndex = editorIndex; if (this.m_TargetAbove) { this.m_TargetIndex++; while (this.m_TargetIndex < activeEditors.Length && this.m_InspectorWindow.ShouldCullEditor(activeEditors, this.m_TargetIndex)) { this.m_TargetIndex++; } if (this.m_TargetIndex == activeEditors.Length) { this.m_TargetIndex = -1; return; } } } if (this.m_TargetAbove && this.m_InspectorWindow.EditorHasLargeHeader(this.m_TargetIndex, activeEditors)) { this.m_TargetIndex--; while (this.m_TargetIndex >= 0 && this.m_InspectorWindow.ShouldCullEditor(activeEditors, this.m_TargetIndex)) { this.m_TargetIndex--; } if (this.m_TargetIndex == -1) { return; } this.m_TargetAbove = false; } if (draggingMode.Value == EditorDragging.DraggingMode.Script) { DragAndDrop.visualMode = DragAndDropVisualMode.Link; } else { bool flag = false; if (activeEditors[this.m_TargetIndex].targets.All((UnityEngine.Object t) => t is Component)) { Component[] targetComponents = activeEditors[this.m_TargetIndex].targets.Cast <Component>().ToArray <Component>(); Component[] sourceComponents = DragAndDrop.objectReferences.Cast <Component>().ToArray <Component>(); flag = this.MoveOrCopyComponents(sourceComponents, targetComponents, EditorUtility.EventHasDragCopyModifierPressed(current), true); } if (!flag) { DragAndDrop.visualMode = DragAndDropVisualMode.None; this.m_TargetIndex = -1; return; } DragAndDrop.visualMode = ((!EditorUtility.EventHasDragCopyModifierPressed(current)) ? DragAndDropVisualMode.Move : DragAndDropVisualMode.Copy); } current.Use(); } } else { this.m_TargetIndex = -1; } return; case EventType.DragPerform: if (this.m_TargetIndex != -1) { EditorDragging.DraggingMode?draggingMode2 = DragAndDrop.GetGenericData("InspectorEditorDraggingMode") as EditorDragging.DraggingMode?; if (!draggingMode2.HasValue || draggingMode2.Value == EditorDragging.DraggingMode.NotApplicable) { this.m_TargetIndex = -1; } else { Editor[] activeEditors2 = tracker.activeEditors; if (activeEditors2[this.m_TargetIndex].targets.All((UnityEngine.Object t) => t is Component)) { Component[] array = activeEditors2[this.m_TargetIndex].targets.Cast <Component>().ToArray <Component>(); if (draggingMode2.Value == EditorDragging.DraggingMode.Script) { IEnumerable <MonoScript> enumerable = DragAndDrop.objectReferences.Cast <MonoScript>(); bool flag2 = true; Component[] array2 = array; for (int i = 0; i < array2.Length; i++) { Component targetComponent = array2[i]; GameObject gameObject = targetComponent.gameObject; if (enumerable.Any((MonoScript s) => !ComponentUtility.WarnCanAddScriptComponent(targetComponent.gameObject, s))) { flag2 = false; break; } } if (flag2) { Undo.IncrementCurrentGroup(); int currentGroup = Undo.GetCurrentGroup(); int num = 0; Component[] array3 = new Component[array.Length * enumerable.Count <MonoScript>()]; Component[] array4 = array; for (int j = 0; j < array4.Length; j++) { Component component = array4[j]; GameObject gameObject2 = component.gameObject; foreach (MonoScript current2 in enumerable) { array3[num++] = Undo.AddComponent(gameObject2, current2.GetClass()); } } if (!ComponentUtility.MoveComponentsRelativeToComponents(array3, array, this.m_TargetAbove)) { Undo.RevertAllDownToGroup(currentGroup); } } } else { Component[] array5 = DragAndDrop.objectReferences.Cast <Component>().ToArray <Component>(); if (array5.Length == 0 || array.Length == 0) { return; } this.MoveOrCopyComponents(array5, array, EditorUtility.EventHasDragCopyModifierPressed(current), false); } this.m_TargetIndex = -1; DragAndDrop.AcceptDrag(); current.Use(); GUIUtility.ExitGUI(); } } } return; } goto IL_26; }
private DragAndDropVisualMode DoDragScenes(GameObjectTreeViewItem parentItem, GameObjectTreeViewItem targetItem, bool perform, TreeViewDragging.DropPosition dropPos) { List <Scene> genericData = DragAndDrop.GetGenericData("SceneHeaderList") as List <Scene>; bool flag1 = genericData != null; bool flag2 = false; if (!flag1 && DragAndDrop.objectReferences.Length > 0) { int num = 0; foreach (UnityEngine.Object objectReference in DragAndDrop.objectReferences) { if (objectReference is SceneAsset) { ++num; } } flag2 = num == DragAndDrop.objectReferences.Length; } if (!flag1 && !flag2) { return(DragAndDropVisualMode.None); } if (perform) { List <Scene> sceneList = (List <Scene>)null; if (flag2) { List <Scene> source = new List <Scene>(); foreach (UnityEngine.Object objectReference in DragAndDrop.objectReferences) { string assetPath = AssetDatabase.GetAssetPath(objectReference); Scene sceneByPath = SceneManager.GetSceneByPath(assetPath); if (SceneHierarchyWindow.IsSceneHeaderInHierarchyWindow(sceneByPath)) { this.m_TreeView.Frame(sceneByPath.handle, true, true); } else { Scene scene = !Event.current.alt ? EditorSceneManager.OpenScene(assetPath, OpenSceneMode.Additive) : EditorSceneManager.OpenScene(assetPath, OpenSceneMode.AdditiveWithoutLoading); if (SceneHierarchyWindow.IsSceneHeaderInHierarchyWindow(scene)) { source.Add(scene); } } } if (targetItem != null) { sceneList = source; } if (SceneManager.sceneCount - source.Count == 1) { ((TreeViewDataSource)this.m_TreeView.data).SetExpanded(SceneManager.GetSceneAt(0).handle, true); } if (source.Count > 0) { Selection.instanceIDs = source.Select <Scene, int>((Func <Scene, int>)(x => x.handle)).ToArray <int>(); this.m_TreeView.Frame(source.Last <Scene>().handle, true, false); } } else { sceneList = genericData; } if (sceneList != null) { if (targetItem != null) { Scene scene = targetItem.scene; if (SceneHierarchyWindow.IsSceneHeaderInHierarchyWindow(scene)) { if (!targetItem.isSceneHeader || dropPos == TreeViewDragging.DropPosition.Upon) { dropPos = TreeViewDragging.DropPosition.Below; } if (dropPos == TreeViewDragging.DropPosition.Above) { for (int index = 0; index < sceneList.Count; ++index) { EditorSceneManager.MoveSceneBefore(sceneList[index], scene); } } else if (dropPos == TreeViewDragging.DropPosition.Below) { for (int index = sceneList.Count - 1; index >= 0; --index) { EditorSceneManager.MoveSceneAfter(sceneList[index], scene); } } } } else { Scene sceneAt = SceneManager.GetSceneAt(SceneManager.sceneCount - 1); for (int index = sceneList.Count - 1; index >= 0; --index) { EditorSceneManager.MoveSceneAfter(sceneList[index], sceneAt); } } } } return(DragAndDropVisualMode.Move); }
protected override DragAndDropVisualMode HandleDragAndDrop(TreeView.DragAndDropArgs args) { DragAndDropVisualMode result = DragAndDropVisualMode.None; List <int> list = DragAndDrop.GetGenericData("BuildPlayerSceneTreeViewItem") as List <int>; if (list != null && list.Count > 0) { result = DragAndDropVisualMode.Move; if (args.performDrop) { int num = this.FindDropAtIndex(args); List <TreeViewItem> list2 = new List <TreeViewItem>(); int num2 = 0; foreach (TreeViewItem current in base.rootItem.children) { if (num2 == num) { foreach (int current2 in list) { list2.Add(base.FindItem(current2, base.rootItem)); } } num2++; if (!list.Contains(current.id)) { list2.Add(current); } } if (list2.Count < base.rootItem.children.Count) { foreach (int current3 in list) { list2.Add(base.FindItem(current3, base.rootItem)); } } base.rootItem.children = list2; EditorBuildSettings.scenes = this.GetSceneList(); this.ReloadAndSelect(list); base.Repaint(); } } else if (DragAndDrop.paths != null && DragAndDrop.paths.Length > 0) { result = DragAndDropVisualMode.Copy; if (args.performDrop) { List <EditorBuildSettingsScene> list3 = new List <EditorBuildSettingsScene>(EditorBuildSettings.scenes); List <EditorBuildSettingsScene> list4 = new List <EditorBuildSettingsScene>(); List <int> list5 = new List <int>(); string[] paths = DragAndDrop.paths; for (int i = 0; i < paths.Length; i++) { string text = paths[i]; if (AssetDatabase.GetMainAssetTypeAtPath(text) == typeof(SceneAsset)) { GUID gUID = new GUID(AssetDatabase.AssetPathToGUID(text)); list5.Add(gUID.GetHashCode()); bool flag = true; foreach (EditorBuildSettingsScene current4 in list3) { if (current4.path == text) { flag = false; break; } } if (flag) { list4.Add(new EditorBuildSettingsScene(text, true)); } } } int index = this.FindDropAtIndex(args); list3.InsertRange(index, list4); EditorBuildSettings.scenes = list3.ToArray(); this.ReloadAndSelect(list5); base.Repaint(); } } return(result); }
public override DragAndDropVisualMode DoDrag(TreeViewItem parentItem, TreeViewItem targetItem, bool perform, DropPosition dropPos) { m_Window.isDragging = false; var retMode = DragAndDropVisualMode.None; var trackDragData = DragAndDrop.GetGenericData(k_GenericDragId) as TimelineDragData; if (trackDragData != null) { retMode = HandleTrackDrop(parentItem, targetItem, perform, dropPos); if (retMode == DragAndDropVisualMode.Copy && targetItem != null && Event.current.type == EventType.DragUpdated) { var targetActor = targetItem as TimelineGroupGUI; if (targetActor != null) { targetActor.isDropTarget = true; } } } else if (DragAndDrop.objectReferences.Any()) { var objectsBeingDropped = DragAndDrop.objectReferences.OfType <UnityObject>(); var director = m_Window.state.editSequence.director; if (ShouldUseHierarchyDragAndDrop()) { // for object drawing var originalTarget = targetItem; TreeViewItem insertBeforeItem = null; HandleNestedItemGUI(ref parentItem, ref targetItem, ref insertBeforeItem); var track = GetTrack(targetItem); var parent = GetTrack(parentItem); var insertBefore = GetTrack(insertBeforeItem); retMode = HandleHierarchyPaneDragAndDrop(objectsBeingDropped, track, perform, m_Timeline, director, ResolveType, insertBefore); // fallback to old clip behaviour if (retMode == DragAndDropVisualMode.None) { retMode = HandleClipPaneObjectDragAndDrop(objectsBeingDropped, track, perform, m_Timeline, parent, director, m_Window.state.timeAreaShownRange.x, ResolveType, insertBefore); } // if we are rejected, clear any drop markers if (retMode == DragAndDropVisualMode.Rejected && targetItem != null) { ClearInsertionMarkers(originalTarget); ClearInsertionMarkers(targetItem); ClearInsertionMarkers(parentItem); ClearInsertionMarkers(insertBeforeItem); } } else { var candidateTime = TimelineHelpers.GetCandidateTime(Event.current.mousePosition); retMode = HandleClipPaneObjectDragAndDrop(objectsBeingDropped, GetTrack(targetItem), perform, m_Timeline, GetTrack(parentItem), director, candidateTime, ResolveType); } } m_Window.isDragging = false; return(retMode); }
void HandleEditorDragging(Editor[] editors, int editorIndex, Rect targetRect, float markerY, bool bottomTarget) { var evt = Event.current; switch (evt.type) { case EventType.DragUpdated: if (targetRect.Contains(evt.mousePosition)) { var draggingMode = DragAndDrop.GetGenericData(k_DraggingModeKey) as DraggingMode ? ; if (!draggingMode.HasValue) { var draggedObjects = DragAndDrop.objectReferences; if (draggedObjects.Length == 0) { draggingMode = DraggingMode.NotApplicable; } else if (draggedObjects.All(o => o is Component && !(o is Transform))) { draggingMode = DraggingMode.Component; } else if (draggedObjects.All(o => o is MonoScript)) { draggingMode = DraggingMode.Script; } else { draggingMode = DraggingMode.NotApplicable; } DragAndDrop.SetGenericData(k_DraggingModeKey, draggingMode); } if (draggingMode.Value != DraggingMode.NotApplicable) { if (bottomTarget) { m_TargetAbove = false; m_TargetIndex = m_LastIndex; } else { m_TargetAbove = evt.mousePosition.y < targetRect.y + targetRect.height / 2f; m_TargetIndex = editorIndex; if (m_TargetAbove) { m_TargetIndex++; while (m_TargetIndex < editors.Length && m_InspectorWindow.ShouldCullEditor(editors, m_TargetIndex)) { m_TargetIndex++; } if (m_TargetIndex == editors.Length) { m_TargetIndex = -1; return; } } } if (m_TargetAbove && InspectorWindow.EditorHasLargeHeader(m_TargetIndex, editors)) { m_TargetIndex--; while (m_TargetIndex >= 0 && m_InspectorWindow.ShouldCullEditor(editors, m_TargetIndex)) { m_TargetIndex--; } if (m_TargetIndex == -1) { return; } m_TargetAbove = false; } if (draggingMode.Value == DraggingMode.Script) { // Validate dragging scripts // Always allow script dragging, instead fail during DragPerform with a dialog box DragAndDrop.visualMode = DragAndDropVisualMode.Link; } else { // Validate dragging components var valid = false; if (editors[m_TargetIndex].targets.All(t => t is Component)) { var targetComponents = editors[m_TargetIndex].targets.Cast <Component>().ToArray(); var sourceComponents = DragAndDrop.objectReferences.Cast <Component>().ToArray(); valid = MoveOrCopyComponents(sourceComponents, targetComponents, EditorUtility.EventHasDragCopyModifierPressed(evt), true); } if (valid) { DragAndDrop.visualMode = EditorUtility.EventHasDragCopyModifierPressed(evt) ? DragAndDropVisualMode.Copy : DragAndDropVisualMode.Move; } else { DragAndDrop.visualMode = DragAndDropVisualMode.None; m_TargetIndex = -1; return; } } evt.Use(); } } else { m_TargetIndex = -1; } break; case EventType.DragPerform: if (m_TargetIndex != -1) { HandleDragPerformEvent(editors, evt, ref m_TargetIndex); } break; case EventType.DragExited: m_TargetIndex = -1; break; case EventType.Repaint: if (DragAndDrop.visualMode != DragAndDropVisualMode.None && DragAndDrop.visualMode != DragAndDropVisualMode.Rejected && (targetRect.Contains(evt.mousePosition) || editorIndex == m_BottomAreaDropIndex && m_BottomArea.Contains(GUIClip.UnclipToWindow(evt.mousePosition)) && m_BottomAreaDropIndex == editors.Length - 1)) { Styles.insertionMarker.Draw(GetMarkerRect(targetRect), false, false, false, false); } break; } }
public DragAndDropVisualMode HandleTrackDrop(TreeViewItem parentItem, TreeViewItem targetItem, bool perform, TreeViewDragging.DropPosition dropPos) { ((TimelineTreeView)this.m_Window.treeView.gui).showInsertionMarker = false; TimelineDragging.TimelineDragData timelineDragData = (TimelineDragging.TimelineDragData)DragAndDrop.GetGenericData("TimelineDragging"); DragAndDropVisualMode result; if (!TimelineDragging.ValidDrag(targetItem, timelineDragData.draggedItems)) { result = 0; } else { TimelineGroupGUI timelineGroupGUI = targetItem as TimelineGroupGUI; if (timelineGroupGUI != null && timelineGroupGUI.track != null) { ((TimelineTreeView)this.m_Window.treeView.gui).showInsertionMarker = true; } if (dropPos == null) { TimelineGroupGUI timelineGroupGUI2 = targetItem as TimelineGroupGUI; if (timelineGroupGUI2 != null) { timelineGroupGUI2.isDropTarget = true; } } if (perform) { List <TrackAsset> draggedActors = (from x in timelineDragData.draggedItems.OfType <TimelineGroupGUI>() select x.track).ToList <TrackAsset>(); if (draggedActors.Count == 0) { result = 0; return(result); } PlayableAsset playableAsset = this.m_Timeline; TimelineGroupGUI timelineGroupGUI3 = parentItem as TimelineGroupGUI; if (timelineGroupGUI3 != null && timelineGroupGUI3.track != null) { playableAsset = timelineGroupGUI3.track; } TrackAsset trackAsset = (timelineGroupGUI == null) ? null : timelineGroupGUI.track; if (playableAsset == this.m_Timeline && dropPos == 1 && trackAsset == null) { trackAsset = this.m_Timeline.tracks.LastOrDefault((TrackAsset x) => !draggedActors.Contains(x)); } if (TrackExtensions.ReparentTracks(draggedActors, playableAsset, trackAsset, dropPos == 2)) { this.m_Window.state.Refresh(true); } } result = 16; } return(result); }
void HandleDragPerformEvent(Editor[] editors, Event evt, ref int targetIndex) { if (targetIndex != -1) { var draggingMode = DragAndDrop.GetGenericData(k_DraggingModeKey) as DraggingMode ? ; if (!draggingMode.HasValue || draggingMode.Value == DraggingMode.NotApplicable) { targetIndex = -1; return; } if (!editors[targetIndex].targets.All(t => t is Component)) { return; } var targetComponents = editors[targetIndex].targets.Cast <Component>().ToArray(); if (draggingMode.Value == DraggingMode.Script) { var scripts = DragAndDrop.objectReferences.Cast <MonoScript>(); // Ensure all script components can be added var valid = true; foreach (var targetComponent in targetComponents) { var gameObject = targetComponent.gameObject; if (scripts.Any(s => !ComponentUtility.WarnCanAddScriptComponent(gameObject, s))) { valid = false; break; } } if (valid) { Undo.IncrementCurrentGroup(); var undoGroup = Undo.GetCurrentGroup(); // Add script components var index = 0; var addedComponents = new Component[targetComponents.Length * scripts.Count()]; for (int i = 0; i < targetComponents.Length; i++) { var targetComponent = targetComponents[i]; var gameObject = targetComponent.gameObject; bool targetIsTransform = targetComponent is Transform; foreach (var script in scripts) { addedComponents[index++] = ObjectFactory.AddComponent(gameObject, script.GetClass()); } // If the target is a Transform, the AddComponent might have replaced it with a RectTransform. // Handle this possibility by updating the target component. if (targetIsTransform) { targetComponents[i] = gameObject.transform; } } // Move added components relative to target components if (!ComponentUtility.MoveComponentsRelativeToComponents(addedComponents, targetComponents, m_TargetAbove)) { // Ensure we have the same selection after calling RevertAllDownToGroup below (MoveComponentsRelativeToComponents can have opened a Prefab in Prefab Mode and changed selection to that root) var wantedSelectedGameObject = Selection.activeGameObject; // Revert added components if move operation fails (e.g. user has been shown the dialog with 'prefab instance restructuring is not posssible' or object is not editable) Undo.RevertAllDownToGroup(undoGroup); if (wantedSelectedGameObject != Selection.activeGameObject) { Selection.activeGameObject = wantedSelectedGameObject; } } } } else { // Handle dragging components var sourceComponents = DragAndDrop.objectReferences.Cast <Component>().ToArray(); if (sourceComponents.Length == 0 || targetComponents.Length == 0) { return; } MoveOrCopyComponents(sourceComponents, targetComponents, EditorUtility.EventHasDragCopyModifierPressed(evt), false); } targetIndex = -1; DragAndDrop.AcceptDrag(); evt.Use(); EditorGUIUtility.ExitGUI(); } }
public bool MoveNext() { if (this.xPos > -1) { if (ListViewShared.HasMouseDown(this.ilvState, this.rect)) { this.ilvState.state.selectionChanged = true; this.ilvState.state.row = this.yPos; this.ilvState.state.column = this.xPos; this.ilvState.state.scrollPos = ListViewShared.ListViewScrollToRow(this.ilvState, this.yPos); if ((this.ilvState.wantsReordering || this.ilvState.wantsToStartCustomDrag) && GUIUtility.hotControl == this.ilvState.state.ID) { ((DragAndDropDelay)GUIUtility.GetStateObject(typeof(DragAndDropDelay), this.ilvState.state.ID)).mouseDownPosition = Event.current.mousePosition; this.ilvState.dragItem = this.yPos; ListViewShared.dragControlID = this.ilvState.state.ID; } } if ((this.ilvState.wantsReordering || this.ilvState.wantsToStartCustomDrag) && (GUIUtility.hotControl == this.ilvState.state.ID && Event.current.type == EventType.MouseDrag) && GUIClip.visibleRect.Contains(Event.current.mousePosition)) { if (((DragAndDropDelay)GUIUtility.GetStateObject(typeof(DragAndDropDelay), this.ilvState.state.ID)).CanStartDrag()) { DragAndDrop.PrepareStartDrag(); DragAndDrop.objectReferences = new UnityEngine.Object[0]; DragAndDrop.paths = (string[])null; if (this.ilvState.wantsReordering) { this.ilvState.state.dropHereRect = new Rect(this.ilvState.rect.x, 0.0f, this.ilvState.rect.width, (float)(this.ilvState.state.rowHeight * 2)); DragAndDrop.StartDrag(this.dragTitle); } else if (this.ilvState.wantsToStartCustomDrag) { DragAndDrop.SetGenericData("CustomDragID", (object)this.ilvState.state.ID); DragAndDrop.StartDrag(this.dragTitle); } } Event.current.Use(); } } ++this.xPos; if (this.xPos > this.xTo) { this.xPos = 0; ++this.yPos; this.rect.x = this.firstRect.x; this.rect.width = (float)this.colWidths[0]; if (this.yPos > this.yTo) { this.quiting = true; } else { this.rect.y += this.rect.height; } } else { if (this.xPos >= 1) { this.rect.x += (float)this.colWidths[this.xPos - 1]; } this.rect.width = (float)this.colWidths[this.xPos]; } this.element.row = this.yPos; this.element.column = this.xPos; this.element.position = this.rect; if (this.element.row >= this.ilvState.state.totalRows) { this.quiting = true; } if (this.isLayouted && Event.current.type == EventType.Layout && this.yFrom + 1 == this.yPos) { this.quiting = true; } if (this.isLayouted && this.yPos != this.yFrom) { GUILayout.EndHorizontal(); } if (this.quiting) { if (this.ilvState.state.drawDropHere && Event.current.GetTypeForControl(this.ilvState.state.ID) == EventType.Repaint) { GUIStyle insertion = (GUIStyle)ListViewShared.Constants.insertion; insertion.Draw(insertion.margin.Remove(this.ilvState.state.dropHereRect), false, false, false, false); } if (ListViewShared.ListViewKeyboard(this.ilvState, this.colWidths.Length)) { this.ilvState.state.selectionChanged = true; } if (Event.current.GetTypeForControl(this.ilvState.state.ID) == EventType.MouseUp) { GUIUtility.hotControl = 0; } if (this.ilvState.wantsReordering && GUIUtility.hotControl == this.ilvState.state.ID) { ListViewState state = this.ilvState.state; switch (Event.current.type) { case EventType.DragUpdated: DragAndDrop.visualMode = !this.ilvState.rect.Contains(Event.current.mousePosition) ? DragAndDropVisualMode.None : DragAndDropVisualMode.Move; Event.current.Use(); if (DragAndDrop.visualMode != DragAndDropVisualMode.None) { state.dropHereRect.y = (float)((Mathf.RoundToInt(Event.current.mousePosition.y / (float)state.rowHeight) - 1) * state.rowHeight); if ((double)state.dropHereRect.y >= (double)(state.rowHeight * state.totalRows)) { state.dropHereRect.y = (float)(state.rowHeight * (state.totalRows - 1)); } state.drawDropHere = true; break; } break; case EventType.DragPerform: if (GUIClip.visibleRect.Contains(Event.current.mousePosition)) { this.ilvState.state.draggedFrom = this.ilvState.dragItem; this.ilvState.state.draggedTo = Mathf.RoundToInt(Event.current.mousePosition.y / (float)state.rowHeight); if (this.ilvState.state.draggedTo > this.ilvState.state.totalRows) { this.ilvState.state.draggedTo = this.ilvState.state.totalRows; } this.ilvState.state.row = this.ilvState.state.draggedTo <= this.ilvState.state.draggedFrom ? this.ilvState.state.draggedTo : this.ilvState.state.draggedTo - 1; this.ilvState.state.selectionChanged = true; DragAndDrop.AcceptDrag(); Event.current.Use(); this.ilvState.wantsReordering = false; this.ilvState.state.drawDropHere = false; } GUIUtility.hotControl = 0; break; case EventType.DragExited: this.ilvState.wantsReordering = false; this.ilvState.state.drawDropHere = false; GUIUtility.hotControl = 0; break; } } else if (this.ilvState.wantsExternalFiles) { switch (Event.current.type) { case EventType.DragUpdated: if (GUIClip.visibleRect.Contains(Event.current.mousePosition) && DragAndDrop.paths != null && DragAndDrop.paths.Length != 0) { DragAndDrop.visualMode = !this.ilvState.rect.Contains(Event.current.mousePosition) ? DragAndDropVisualMode.None : DragAndDropVisualMode.Copy; Event.current.Use(); if (DragAndDrop.visualMode != DragAndDropVisualMode.None) { this.ilvState.state.dropHereRect = new Rect(this.ilvState.rect.x, (float)((Mathf.RoundToInt(Event.current.mousePosition.y / (float)this.ilvState.state.rowHeight) - 1) * this.ilvState.state.rowHeight), this.ilvState.rect.width, (float)this.ilvState.state.rowHeight); if ((double)this.ilvState.state.dropHereRect.y >= (double)(this.ilvState.state.rowHeight * this.ilvState.state.totalRows)) { this.ilvState.state.dropHereRect.y = (float)(this.ilvState.state.rowHeight * (this.ilvState.state.totalRows - 1)); } this.ilvState.state.drawDropHere = true; break; } break; } break; case EventType.DragPerform: if (GUIClip.visibleRect.Contains(Event.current.mousePosition)) { this.ilvState.state.fileNames = DragAndDrop.paths; DragAndDrop.AcceptDrag(); Event.current.Use(); this.ilvState.wantsExternalFiles = false; this.ilvState.state.drawDropHere = false; this.ilvState.state.draggedTo = Mathf.RoundToInt(Event.current.mousePosition.y / (float)this.ilvState.state.rowHeight); if (this.ilvState.state.draggedTo > this.ilvState.state.totalRows) { this.ilvState.state.draggedTo = this.ilvState.state.totalRows; } this.ilvState.state.row = this.ilvState.state.draggedTo; } GUIUtility.hotControl = 0; break; case EventType.DragExited: this.ilvState.wantsExternalFiles = false; this.ilvState.state.drawDropHere = false; GUIUtility.hotControl = 0; break; } } else if (this.ilvState.wantsToAcceptCustomDrag && ListViewShared.dragControlID != this.ilvState.state.ID) { switch (Event.current.type) { case EventType.DragUpdated: if (GUIClip.visibleRect.Contains(Event.current.mousePosition) && DragAndDrop.GetGenericData("CustomDragID") != null) { DragAndDrop.visualMode = !this.ilvState.rect.Contains(Event.current.mousePosition) ? DragAndDropVisualMode.None : DragAndDropVisualMode.Move; Event.current.Use(); break; } break; case EventType.DragPerform: object genericData = DragAndDrop.GetGenericData("CustomDragID"); if (GUIClip.visibleRect.Contains(Event.current.mousePosition) && genericData != null) { this.ilvState.state.customDraggedFromID = (int)genericData; DragAndDrop.AcceptDrag(); Event.current.Use(); } GUIUtility.hotControl = 0; break; case EventType.DragExited: GUIUtility.hotControl = 0; break; } } if (this.ilvState.beganHorizontal) { EditorGUILayout.EndScrollView(); GUILayout.EndHorizontal(); this.ilvState.beganHorizontal = false; } if (this.isLayouted) { GUILayoutUtility.EndLayoutGroup(); EditorGUILayout.EndScrollView(); } this.ilvState.wantsReordering = false; this.ilvState.wantsExternalFiles = false; } else if (this.isLayouted) { if (this.yPos != this.yFrom) { this.ilvStateL.group.ResetCursor(); this.ilvStateL.group.AddY(); } else { this.ilvStateL.group.AddY((float)(this.ilvState.invisibleRows * this.ilvState.state.rowHeight)); } } if (this.isLayouted) { if (!this.quiting) { GUILayout.BeginHorizontal(GUIStyle.none, new GUILayoutOption[0]); } else { GUILayout.EndHorizontal(); } } return(!this.quiting); }
protected override DragAndDropVisualMode HandleDragAndDrop(DragAndDropArgs args) { // Check if we can handle the current drag data (could be dragged in from other areas/windows in the editor) var draggedRows = DragAndDrop.GetGenericData(k_DragId) as List <int>; if (draggedRows == null || args.dragAndDropPosition != DragAndDropPosition.BetweenItems) { return(DragAndDropVisualMode.None); } if (args.performDrop) { if (m_Positions.hasMultipleDifferentValues) { if (!EditorUtility.DisplayDialog(L10n.Tr("Moving an array element will copy the complete array to all other selected objects."), L10n.Tr("Unique values in the different selected objects will be lost"), L10n.Tr("OK"), L10n.Tr("Cancel"))) { return(DragAndDropVisualMode.Rejected); } } int arraySize = GetArraySize(); var newList = new List <Vector3>(arraySize); draggedRows.Sort(); int nextDragItem = 0; for (int i = 0; i < arraySize; ++i) { if (i == args.insertAtIndex) { // Insert the items here foreach (var viewItem in draggedRows) { newList.Add(m_Positions.GetArrayElementAtIndex(viewItem).vector3Value); } } if (i == draggedRows[nextDragItem]) { // Ignore this item, it is being moved nextDragItem++; if (nextDragItem >= draggedRows.Count) { nextDragItem = 0; } } else { newList.Add(m_Positions.GetArrayElementAtIndex(i).vector3Value); } } // Add to the end? if (args.insertAtIndex == arraySize) { foreach (var viewItem in draggedRows) { newList.Add(m_Positions.GetArrayElementAtIndex(viewItem).vector3Value); } } // Copy the list back for (int i = 0; i < arraySize; ++i) { m_Positions.GetArrayElementAtIndex(i).vector3Value = newList[i]; } SetSelection(Enumerable.Range(args.insertAtIndex - draggedRows.Count(o => o < args.insertAtIndex), draggedRows.Count).ToList()); } return(DragAndDropVisualMode.Move); }
private DragAndDropVisualMode DoDragScenes(GameObjectTreeViewItem parentItem, GameObjectTreeViewItem targetItem, bool perform, TreeViewDragging.DropPosition dropPos) { List <Scene> list = DragAndDrop.GetGenericData("SceneHeaderList") as List <Scene>; bool flag = list != null; bool flag2 = false; if (!flag && DragAndDrop.objectReferences.Length > 0) { int num = 0; UnityEngine.Object[] objectReferences = DragAndDrop.objectReferences; for (int i = 0; i < objectReferences.Length; i++) { UnityEngine.Object @object = objectReferences[i]; if (@object is SceneAsset) { num++; } } flag2 = (num == DragAndDrop.objectReferences.Length); } if (!flag && !flag2) { return(DragAndDropVisualMode.None); } if (perform) { List <Scene> list2 = null; if (flag2) { List <Scene> list3 = new List <Scene>(); UnityEngine.Object[] objectReferences2 = DragAndDrop.objectReferences; for (int j = 0; j < objectReferences2.Length; j++) { UnityEngine.Object assetObject = objectReferences2[j]; string assetPath = AssetDatabase.GetAssetPath(assetObject); Scene scene = SceneManager.GetSceneByPath(assetPath); if (SceneHierarchyWindow.IsSceneHeaderInHierarchyWindow(scene)) { this.m_TreeView.Frame(scene.handle, true, true); } else { bool alt = Event.current.alt; if (alt) { scene = EditorSceneManager.OpenScene(assetPath, OpenSceneMode.AdditiveWithoutLoading); } else { scene = EditorSceneManager.OpenScene(assetPath, OpenSceneMode.Additive); } if (SceneHierarchyWindow.IsSceneHeaderInHierarchyWindow(scene)) { list3.Add(scene); } } } if (targetItem != null) { list2 = list3; } if (list3.Count > 0) { Selection.instanceIDs = (from x in list3 select x.handle).ToArray <int>(); this.m_TreeView.Frame(list3.Last <Scene>().handle, true, false); } } else { list2 = list; } if (list2 != null) { if (targetItem != null) { Scene scene2 = targetItem.scene; if (SceneHierarchyWindow.IsSceneHeaderInHierarchyWindow(scene2)) { if (!targetItem.isSceneHeader || dropPos == TreeViewDragging.DropPosition.Upon) { dropPos = TreeViewDragging.DropPosition.Below; } if (dropPos == TreeViewDragging.DropPosition.Above) { for (int k = 0; k < list2.Count; k++) { EditorSceneManager.MoveSceneBefore(list2[k], scene2); } } else if (dropPos == TreeViewDragging.DropPosition.Below) { for (int l = list2.Count - 1; l >= 0; l--) { EditorSceneManager.MoveSceneAfter(list2[l], scene2); } } } } else { Scene sceneAt = SceneManager.GetSceneAt(SceneManager.sceneCount - 1); for (int m = list2.Count - 1; m >= 0; m--) { EditorSceneManager.MoveSceneAfter(list2[m], sceneAt); } } } } return(DragAndDropVisualMode.Move); }
public bool MoveNext() { if (xPos > -1) { if (ListViewShared.HasMouseDown(ilvState, rect)) { var previousRow = ilvState.state.row; ilvState.state.selectionChanged = true; ilvState.state.row = yPos; ilvState.state.column = xPos; ilvState.state.scrollPos = ListViewShared.ListViewScrollToRow(ilvState, yPos); // this is about clicking on a row that is partially visible if (ilvState.wantsRowMultiSelection) { MultiSelection(ilvState, previousRow); } if ((ilvState.wantsReordering || ilvState.wantsToStartCustomDrag) && (GUIUtility.hotControl == ilvState.state.ID)) { DragAndDropDelay delay = (DragAndDropDelay)GUIUtility.GetStateObject(typeof(DragAndDropDelay), ilvState.state.ID); delay.mouseDownPosition = Event.current.mousePosition; ilvState.dragItem = yPos; dragControlID = ilvState.state.ID; } } // On Mouse drag, start drag & drop if (!ListViewShared.isDragging && (ilvState.wantsReordering || ilvState.wantsToStartCustomDrag) && GUIUtility.hotControl == ilvState.state.ID && Event.current.type == EventType.MouseDrag && GUIClip.visibleRect.Contains(Event.current.mousePosition)) { DragAndDropDelay delay = (DragAndDropDelay)GUIUtility.GetStateObject(typeof(DragAndDropDelay), ilvState.state.ID); if (delay.CanStartDrag()) { DragAndDrop.PrepareStartDrag(); DragAndDrop.objectReferences = new UnityEngine.Object[] {}; // this IS required for dragging to work DragAndDrop.paths = null; if (ilvState.wantsReordering) { ilvState.state.dropHereRect = new Rect(ilvState.rect.x, 0, ilvState.rect.width, ilvState.state.rowHeight * 2); DragAndDrop.StartDrag(dragTitle); } else if (ilvState.wantsToStartCustomDrag) { DragAndDrop.SetGenericData("CustomDragID", ilvState.state.ID); DragAndDrop.StartDrag(dragTitle); } ListViewShared.isDragging = true; } Event.current.Use(); } } xPos++; if (xPos > xTo) { xPos = 0; yPos++; rect.x = firstRect.x; rect.width = colWidths[0]; if (yPos > yTo) { quiting = true; } else // move vertically { rect.y += rect.height; } } else // move horizontally { if (xPos >= 1) { rect.x += colWidths[xPos - 1]; } rect.width = colWidths[xPos]; } element.row = yPos; element.column = xPos; element.position = rect; if (element.row >= ilvState.state.totalRows) { quiting = true; } if (isLayouted && Event.current.type == EventType.Layout) { // this is just "on layout event enumerate just first row" (so we get height of single row) if (yFrom + 1 == yPos) { quiting = true; } } if (isLayouted && yPos != yFrom) { GUILayout.EndHorizontal(); } if (quiting) { if (ilvState.state.drawDropHere && Event.current.GetTypeForControl(ilvState.state.ID) == EventType.Repaint) { GUIStyle insertion = Constants.insertion; insertion.Draw(insertion.margin.Remove(ilvState.state.dropHereRect), false, false, false, false); } if (ListViewShared.ListViewKeyboard(ilvState, colWidths.Length)) { ilvState.state.selectionChanged = true; } if (Event.current.GetTypeForControl(ilvState.state.ID) == EventType.MouseUp) { GUIUtility.hotControl = 0; } if (ilvState.wantsReordering && (GUIUtility.hotControl == ilvState.state.ID)) { ListViewState lv = ilvState.state; switch (Event.current.type) { case EventType.DragUpdated: { DragAndDrop.visualMode = ilvState.rect.Contains(Event.current.mousePosition) ? DragAndDropVisualMode.Move : DragAndDropVisualMode.None; Event.current.Use(); if (DragAndDrop.visualMode != DragAndDropVisualMode.None) { lv.dropHereRect.y = (Mathf.RoundToInt(Event.current.mousePosition.y / lv.rowHeight) - 1) * lv.rowHeight; if (lv.dropHereRect.y >= lv.rowHeight * lv.totalRows) { lv.dropHereRect.y = lv.rowHeight * (lv.totalRows - 1); } lv.drawDropHere = true; } break; } case EventType.DragPerform: { if (GUIClip.visibleRect.Contains(Event.current.mousePosition)) { ilvState.state.draggedFrom = ilvState.dragItem; ilvState.state.draggedTo = Mathf.RoundToInt(Event.current.mousePosition.y / lv.rowHeight); if (ilvState.state.draggedTo > ilvState.state.totalRows) { ilvState.state.draggedTo = ilvState.state.totalRows; } // the guy handling this would better actually rearrange items... if (ilvState.state.draggedTo > ilvState.state.draggedFrom) { ilvState.state.row = ilvState.state.draggedTo - 1; } else { ilvState.state.row = ilvState.state.draggedTo; } ilvState.state.selectionChanged = true; DragAndDrop.AcceptDrag(); Event.current.Use(); ilvState.wantsReordering = false; ilvState.state.drawDropHere = false; } GUIUtility.hotControl = 0; break; } case EventType.DragExited: { ilvState.wantsReordering = false; ilvState.state.drawDropHere = false; GUIUtility.hotControl = 0; break; } } } else if (ilvState.wantsExternalFiles) { switch (Event.current.type) { case EventType.DragUpdated: { if ((GUIClip.visibleRect.Contains(Event.current.mousePosition)) && (DragAndDrop.paths != null) && (DragAndDrop.paths.Length != 0)) // dragging files from somewhere { DragAndDrop.visualMode = ilvState.rect.Contains(Event.current.mousePosition) ? DragAndDropVisualMode.Copy : DragAndDropVisualMode.None; Event.current.Use(); if (DragAndDrop.visualMode != DragAndDropVisualMode.None) { ilvState.state.dropHereRect = new Rect(ilvState.rect.x, (Mathf.RoundToInt(Event.current.mousePosition.y / ilvState.state.rowHeight) - 1) * ilvState.state.rowHeight, ilvState.rect.width, ilvState.state.rowHeight); if (ilvState.state.dropHereRect.y >= ilvState.state.rowHeight * ilvState.state.totalRows) { ilvState.state.dropHereRect.y = ilvState.state.rowHeight * (ilvState.state.totalRows - 1); } ilvState.state.drawDropHere = true; } } break; } case EventType.DragPerform: { if (GUIClip.visibleRect.Contains(Event.current.mousePosition)) { ilvState.state.fileNames = DragAndDrop.paths; DragAndDrop.AcceptDrag(); Event.current.Use(); ilvState.wantsExternalFiles = false; ilvState.state.drawDropHere = false; ilvState.state.draggedTo = Mathf.RoundToInt(Event.current.mousePosition.y / ilvState.state.rowHeight); if (ilvState.state.draggedTo > ilvState.state.totalRows) { ilvState.state.draggedTo = ilvState.state.totalRows; } ilvState.state.row = ilvState.state.draggedTo; } GUIUtility.hotControl = 0; break; } case EventType.DragExited: { ilvState.wantsExternalFiles = false; ilvState.state.drawDropHere = false; GUIUtility.hotControl = 0; break; } } } else if (ilvState.wantsToAcceptCustomDrag && (dragControlID != ilvState.state.ID)) { switch (Event.current.type) { case EventType.DragUpdated: { object data = DragAndDrop.GetGenericData("CustomDragID"); if (GUIClip.visibleRect.Contains(Event.current.mousePosition) && data != null) { DragAndDrop.visualMode = ilvState.rect.Contains(Event.current.mousePosition) ? DragAndDropVisualMode.Move : DragAndDropVisualMode.None; Event.current.Use(); } break; } case EventType.DragPerform: { object data = DragAndDrop.GetGenericData("CustomDragID"); if (GUIClip.visibleRect.Contains(Event.current.mousePosition) && data != null) { ilvState.state.customDraggedFromID = (int)data; DragAndDrop.AcceptDrag(); Event.current.Use(); } GUIUtility.hotControl = 0; break; } case EventType.DragExited: { GUIUtility.hotControl = 0; break; } } } if (ilvState.beganHorizontal) { EditorGUILayout.EndScrollView(); GUILayout.EndHorizontal(); ilvState.beganHorizontal = false; } if (isLayouted) { GUILayoutUtility.EndLayoutGroup(); EditorGUILayout.EndScrollView(); } ilvState.wantsReordering = false; ilvState.wantsExternalFiles = false; } else if (isLayouted) { if (yPos != yFrom) { ilvStateL.group.ResetCursor(); ilvStateL.group.AddY(); } else { ilvStateL.group.AddY(ilvState.invisibleRows * ilvState.state.rowHeight); } } if (isLayouted) { if (!quiting) { GUILayout.BeginHorizontal(GUIStyle.none); // for each row } else { GUILayout.EndHorizontal(); // the one used for drawing LVs background } } return(!quiting); }
void HandleEditorDragging(Editor[] editors, int editorIndex, Rect targetRect, float markerY, bool bottomTarget) { var evt = Event.current; switch (evt.type) { case EventType.DragUpdated: if (targetRect.Contains(evt.mousePosition)) { var draggingMode = DragAndDrop.GetGenericData(k_DraggingModeKey) as DraggingMode ? ; if (!draggingMode.HasValue) { var draggedObjects = DragAndDrop.objectReferences; if (draggedObjects.Length == 0) { draggingMode = DraggingMode.NotApplicable; } else if (draggedObjects.All(o => o is Component && !(o is Transform))) { draggingMode = DraggingMode.Component; } else if (draggedObjects.All(o => o is MonoScript)) { draggingMode = DraggingMode.Script; } else { draggingMode = DraggingMode.NotApplicable; } DragAndDrop.SetGenericData(k_DraggingModeKey, draggingMode); } if (draggingMode.Value != DraggingMode.NotApplicable) { if (bottomTarget) { m_TargetAbove = false; m_TargetIndex = m_LastIndex; } else { m_TargetAbove = evt.mousePosition.y < targetRect.y + targetRect.height / 2f; m_TargetIndex = editorIndex; if (m_TargetAbove) { m_TargetIndex++; while (m_TargetIndex < editors.Length && m_InspectorWindow.ShouldCullEditor(editors, m_TargetIndex)) { m_TargetIndex++; } if (m_TargetIndex == editors.Length) { m_TargetIndex = -1; return; } } } if (m_TargetAbove && m_InspectorWindow.EditorHasLargeHeader(m_TargetIndex, editors)) { m_TargetIndex--; while (m_TargetIndex >= 0 && m_InspectorWindow.ShouldCullEditor(editors, m_TargetIndex)) { m_TargetIndex--; } if (m_TargetIndex == -1) { return; } m_TargetAbove = false; } if (draggingMode.Value == DraggingMode.Script) { // Validate dragging scripts // Always allow script dragging, instead fail during DragPerform with a dialog box DragAndDrop.visualMode = DragAndDropVisualMode.Link; } else { // Validate dragging components var valid = false; if (editors[m_TargetIndex].targets.All(t => t is Component)) { var targetComponents = editors[m_TargetIndex].targets.Cast <Component>().ToArray(); var sourceComponents = DragAndDrop.objectReferences.Cast <Component>().ToArray(); valid = MoveOrCopyComponents(sourceComponents, targetComponents, EditorUtility.EventHasDragCopyModifierPressed(evt), true); } if (valid) { DragAndDrop.visualMode = EditorUtility.EventHasDragCopyModifierPressed(evt) ? DragAndDropVisualMode.Copy : DragAndDropVisualMode.Move; } else { DragAndDrop.visualMode = DragAndDropVisualMode.None; m_TargetIndex = -1; return; } } evt.Use(); } } else { m_TargetIndex = -1; } break; case EventType.DragPerform: if (m_TargetIndex != -1) { var draggingMode = DragAndDrop.GetGenericData(k_DraggingModeKey) as DraggingMode ? ; if (!draggingMode.HasValue || draggingMode.Value == DraggingMode.NotApplicable) { m_TargetIndex = -1; return; } if (!editors[m_TargetIndex].targets.All(t => t is Component)) { return; } var targetComponents = editors[m_TargetIndex].targets.Cast <Component>().ToArray(); if (draggingMode.Value == DraggingMode.Script) { var scripts = DragAndDrop.objectReferences.Cast <MonoScript>(); // Ensure all script components can be added var valid = true; foreach (var targetComponent in targetComponents) { var gameObject = targetComponent.gameObject; if (scripts.Any(s => !ComponentUtility.WarnCanAddScriptComponent(targetComponent.gameObject, s))) { valid = false; break; } } if (valid) { Undo.IncrementCurrentGroup(); var undoGroup = Undo.GetCurrentGroup(); // Add script components var index = 0; var addedComponents = new Component[targetComponents.Length * scripts.Count()]; for (int i = 0; i < targetComponents.Length; i++) { var targetComponent = targetComponents[i]; var gameObject = targetComponent.gameObject; bool targetIsTransform = targetComponent is Transform; foreach (var script in scripts) { addedComponents[index++] = ObjectFactory.AddComponent(gameObject, script.GetClass()); } // If the target is a Transform, the AddComponent might have replaced it with a RectTransform. // Handle this possibility by updating the target component. if (targetIsTransform) { targetComponents[i] = gameObject.transform; } } // Move added components relative to target components if (!ComponentUtility.MoveComponentsRelativeToComponents(addedComponents, targetComponents, m_TargetAbove)) { // Revert added components if move operation fails (e.g. user aborts when asked to break prefab instance) Undo.RevertAllDownToGroup(undoGroup); } } } else { // Handle dragging components var sourceComponents = DragAndDrop.objectReferences.Cast <Component>().ToArray(); if (sourceComponents.Length == 0 || targetComponents.Length == 0) { return; } MoveOrCopyComponents(sourceComponents, targetComponents, EditorUtility.EventHasDragCopyModifierPressed(evt), false); } m_TargetIndex = -1; DragAndDrop.AcceptDrag(); evt.Use(); EditorGUIUtility.ExitGUI(); } break; case EventType.DragExited: m_TargetIndex = -1; break; case EventType.Repaint: if (m_TargetIndex != -1 && targetRect.Contains(evt.mousePosition)) { Styles.insertionMarker.Draw(GetMarkerRect(targetRect, markerY, m_TargetAbove), false, false, false, false); } break; } }
private DragAndDropVisualMode DoDragScenes(GameObjectTreeViewItem parentItem, GameObjectTreeViewItem targetItem, bool perform, TreeViewDragging.DropPosition dropPos) { List <Scene> genericData = DragAndDrop.GetGenericData("SceneHeaderList") as List <Scene>; bool flag = genericData != null; bool flag2 = false; if (!flag && (DragAndDrop.objectReferences.Length > 0)) { int num = 0; foreach (Object obj2 in DragAndDrop.objectReferences) { if (obj2 is SceneAsset) { num++; } } flag2 = num == DragAndDrop.objectReferences.Length; } if (!flag && !flag2) { return(DragAndDropVisualMode.None); } if (perform) { List <Scene> list2 = null; if (flag2) { List <Scene> source = new List <Scene>(); foreach (Object obj3 in DragAndDrop.objectReferences) { string assetPath = AssetDatabase.GetAssetPath(obj3); Scene sceneByPath = SceneManager.GetSceneByPath(assetPath); if (SceneHierarchyWindow.IsSceneHeaderInHierarchyWindow(sceneByPath)) { base.m_TreeView.Frame(sceneByPath.handle, true, true); } else { if (Event.current.alt) { sceneByPath = EditorSceneManager.OpenScene(assetPath, OpenSceneMode.AdditiveWithoutLoading); } else { sceneByPath = EditorSceneManager.OpenScene(assetPath, OpenSceneMode.Additive); } if (SceneHierarchyWindow.IsSceneHeaderInHierarchyWindow(sceneByPath)) { source.Add(sceneByPath); } } } if (targetItem != null) { list2 = source; } if ((SceneManager.sceneCount - source.Count) == 1) { Scene sceneAt = SceneManager.GetSceneAt(0); ((TreeViewDataSource)base.m_TreeView.data).SetExpanded(sceneAt.handle, true); } if (source.Count > 0) { if (< > f__am$cache1 == null) {