using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEditor; using UnityEngine; namespace JBooth.MicroVerseCore.Browser { public class ContentSelectionGridMovement { /// /// Content collection of the preset to be moved. null if none is set /// private static ContentCollection moveContentCollection = null; /// /// Index of the preset to be moved. -1 if none is set /// private static int moveCollectionIndex = -1; public static void OnInspectorGUI( PresetItem presetItem) { if (Event.current.type == EventType.KeyDown) { if (Event.current.keyCode == KeyCode.X) { PrepareMove(presetItem); Event.current.Use(); } } if (Event.current.type == EventType.KeyDown) { if (Event.current.keyCode == KeyCode.V) { InsertBefore(presetItem); Event.current.Use(); } } } public static bool MoveHereEnabled(PresetItem presetItem) { return moveContentCollection != null && moveCollectionIndex != -1 && presetItem != null && moveContentCollection == presetItem.collection; } public static void PrepareMove(PresetItem presetItem) { if (presetItem == null) return; moveCollectionIndex = presetItem.collectionIndex; moveContentCollection = presetItem.collection; Debug.Log($"copyCollectionIndex = {moveCollectionIndex}"); } public static void InsertBefore(PresetItem presetItem) { if (presetItem == null) return; if (moveContentCollection == null || moveCollectionIndex == -1) return; int currentIndex = presetItem.collectionIndex; if ((currentIndex == -1)) return; if (currentIndex == moveCollectionIndex) return; List list = presetItem.collection.contents.ToList(); ContentData moveable = list[moveCollectionIndex]; ContentData target = presetItem.content; list.Remove(moveable); int insertIndex = list.IndexOf(target); list.Insert(insertIndex, moveable); presetItem.collection.contents = list.ToArray(); EditorUtility.SetDirty(presetItem.collection); // AssetDatabase.SaveAssets(); // AssetDatabase.Refresh(); moveCollectionIndex = -1; } } }