65 lines
2.4 KiB
C#
65 lines
2.4 KiB
C#
|
namespace Dreamteck.Editor
|
||
|
{
|
||
|
using UnityEngine;
|
||
|
using UnityEditor;
|
||
|
|
||
|
public class Toolbar
|
||
|
{
|
||
|
GUIContent[] shownContent;
|
||
|
GUIContent[] allContent;
|
||
|
public bool center = true;
|
||
|
public bool newLine = true;
|
||
|
public float elementWidth = 0f;
|
||
|
public float elementHeight = 23f;
|
||
|
|
||
|
public Toolbar(GUIContent[] iconsNormal, GUIContent[] iconsSelected, float elementWidth = 0f)
|
||
|
{
|
||
|
this.elementWidth = elementWidth;
|
||
|
if(iconsNormal.Length != iconsSelected.Length)
|
||
|
{
|
||
|
Debug.LogError("Invalid icon count for toolbar ");
|
||
|
return;
|
||
|
}
|
||
|
allContent = new GUIContent[iconsNormal.Length * 2];
|
||
|
shownContent = new GUIContent[iconsNormal.Length];
|
||
|
iconsNormal.CopyTo(allContent, 0);
|
||
|
iconsSelected.CopyTo(allContent, iconsNormal.Length);
|
||
|
}
|
||
|
|
||
|
public Toolbar(GUIContent[] contents, float elementWidth = 0f)
|
||
|
{
|
||
|
this.elementWidth = elementWidth;
|
||
|
allContent = new GUIContent[contents.Length * 2];
|
||
|
shownContent = new GUIContent[contents.Length];
|
||
|
contents.CopyTo(allContent, 0);
|
||
|
contents.CopyTo(allContent, contents.Length);
|
||
|
}
|
||
|
|
||
|
public void SetContent(int index, GUIContent content)
|
||
|
{
|
||
|
allContent[index] = content;
|
||
|
allContent[shownContent.Length + index] = content;
|
||
|
}
|
||
|
|
||
|
public void SetContent(int index, GUIContent content, GUIContent contentSelected)
|
||
|
{
|
||
|
allContent[index] = content;
|
||
|
allContent[shownContent.Length + index] = contentSelected;
|
||
|
}
|
||
|
|
||
|
public void Draw(ref int selected)
|
||
|
{
|
||
|
for (int i = 0; i < shownContent.Length; i++)
|
||
|
{
|
||
|
shownContent[i] = selected == i ? allContent[shownContent.Length + i] : allContent[i];
|
||
|
}
|
||
|
if(newLine) EditorGUILayout.BeginHorizontal();
|
||
|
if(center) GUILayout.FlexibleSpace();
|
||
|
if(elementWidth > 0f) selected = GUILayout.Toolbar(selected, shownContent, GUILayout.Width(elementWidth * shownContent.Length), GUILayout.Height(elementHeight));
|
||
|
else selected = GUILayout.Toolbar(selected, shownContent, GUILayout.Height(elementHeight));
|
||
|
if (center) GUILayout.FlexibleSpace();
|
||
|
if (newLine) EditorGUILayout.EndHorizontal();
|
||
|
}
|
||
|
}
|
||
|
}
|