0.2.0: Added drag and drop between entries in list and fixed some bugs

This commit is contained in:
Anders Ejlersen 2021-02-14 13:01:59 +01:00
parent dea60c6e4a
commit 1e1736f94a
8 changed files with 150 additions and 38 deletions

View file

@ -59,9 +59,10 @@ namespace Game.NavigationTool.Editor
}
HandleDragAndDropEvents();
HandleManipulatedEntry();
HandleManipulatedEntry(styles);
FavoritesGUIUtility.EndDraw();
}
private void HandleDragAndDropEvents()
{
Favorites favorites = FavoritesUtility.GetFavorites();
@ -76,20 +77,18 @@ namespace Game.NavigationTool.Editor
if (!viewTools.IsSearching())
toParent = FavoritesGUIUtility.hoverEntry;
favorites.AddRangeByPath(DragAndDrop.paths, toParent);
}
}
private static void HandleManipulatedEntry()
private static void HandleManipulatedEntry(Styles styles)
{
Favorites favorites = FavoritesUtility.GetFavorites();
Favorites.Entry entry = FavoritesGUIUtility.manipulatingEntry;
switch (FavoritesGUIUtility.manipulatingState)
{
case EManipulatingState.BeginClick:
break;
case EManipulatingState.PerformedClick:
if (entry.isAsset)
{
@ -102,23 +101,23 @@ namespace Game.NavigationTool.Editor
favorites.Save();
}
FavoritesGUIUtility.ClearManipulating();
break;
case EManipulatingState.EndClick:
FavoritesGUIUtility.ClearManipulating();
break;
case EManipulatingState.BeginDrag:
Rect rect = FavoritesGUIUtility.manipulatingRect;
rect.position = Event.current.mousePosition - FavoritesGUIUtility.manipulatingMouseOffset;
FavoritesGUIUtility.DrawShadowEntry(rect, entry, styles);
break;
case EManipulatingState.PerformedDrag:
FavoritesGUIUtility.ClearManipulating();
break;
case EManipulatingState.EndDrag:
favorites.Move(entry, FavoritesGUIUtility.hoverEntry);
FavoritesGUIUtility.ClearManipulating();
break;
case EManipulatingState.PerformedContextClick:
FavoritesGUIUtility.ClearManipulating();
EditorFavoritesPopupWindowContextMenu.Show(Event.current.mousePosition, entry);
break;
case EManipulatingState.EndClick:
case EManipulatingState.EndDrag:
case EManipulatingState.EndContextClick:
FavoritesGUIUtility.ClearManipulating();
break;

View file

@ -8,6 +8,7 @@ namespace Game.NavigationTool.Editor
public GUIStyle buttonAddFolder;
public GUIStyle entry;
public GUIStyle invalidEntry;
public Texture2D foldoutIn;
public Texture2D foldoutOut;
@ -20,6 +21,7 @@ namespace Game.NavigationTool.Editor
if (this.skin == skin)
return;
this.skin = skin;
toolbox = new GUIStyle(skin.box);
buttonAddFolder = new GUIStyle(skin.button);
@ -29,6 +31,11 @@ namespace Game.NavigationTool.Editor
entry.hover.textColor = entry.onHover.textColor = Color.white;
entry.active.textColor = entry.onActive.textColor = Color.yellow;
invalidEntry = new GUIStyle(entry);
invalidEntry.normal.textColor = Color.red;
invalidEntry.hover.textColor = invalidEntry.onHover.textColor = new Color(1.0f, 0.3f, 0.3f);
invalidEntry.active.textColor = invalidEntry.onActive.textColor = new Color(1.0f, 0.0f, 0.5f);
GUIStyle style = skin.FindStyle("Foldout");
if (style != null)