0.2.0: Added drag and drop between entries in list and fixed some bugs
This commit is contained in:
parent
dea60c6e4a
commit
1e1736f94a
8 changed files with 150 additions and 38 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue