forked from kaka3286/RoadRunner
1379 lines
48 KiB
C#
1379 lines
48 KiB
C#
#if UNITY_EDITOR
|
||
|
||
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using UnityEngine;
|
||
using UnityEditor;
|
||
using TMPro;
|
||
using DamageNumbersPro;
|
||
using UnityEngine.Rendering;
|
||
using UnityEditor.SceneManagement;
|
||
|
||
namespace DamageNumbersPro.Internal {
|
||
public static class DNPEditorInternal
|
||
{
|
||
//Public:
|
||
public static int currentTab;
|
||
public static bool repaintViews;
|
||
public static HashSet<string> hints;
|
||
public static DamageNumber[] damageNumbers;
|
||
public static TextMeshPro[] textMeshPros;
|
||
|
||
//Private:
|
||
static Transform[] meshAs;
|
||
static Transform[] meshBs;
|
||
|
||
//Presets:
|
||
static Dictionary<string,DNPPreset[]> allPresets;
|
||
|
||
//GUI Resources:
|
||
public static GUIStyle labelStyle;
|
||
public static GUIStyle buttonStyle;
|
||
public static GUIStyle rightTextStyle;
|
||
public static GUIStyle centerTextStyle;
|
||
public static GUIStyle bottomRightTextStyle;
|
||
public static GUIStyle topRightTextStyle;
|
||
static GUIStyle whiteBoxStyle;
|
||
static Texture2D whiteBoxTexture;
|
||
static Texture bannerTexture;
|
||
public static float currentWidth;
|
||
|
||
//External Editor:
|
||
static int currentEditor;
|
||
static bool cleanEditor;
|
||
static Material[] currentMaterials;
|
||
static MaterialEditor materialEditor;
|
||
static Editor textMeshProEditor;
|
||
static bool generatedGUIStyles;
|
||
|
||
public static void PrepareInspector(DamageNumberEditor damageNumberEditor)
|
||
{
|
||
//Clean Editors:
|
||
cleanEditor = true;
|
||
generatedGUIStyles = false;
|
||
|
||
//Get Damage Numbers:
|
||
damageNumbers = new DamageNumber[damageNumberEditor.targets.Length];
|
||
for (int i = 0; i < damageNumberEditor.targets.Length; i++)
|
||
{
|
||
damageNumbers[i] = (DamageNumber)damageNumberEditor.targets[i];
|
||
}
|
||
|
||
//Type:
|
||
bool isMesh = damageNumbers[0].IsMesh();
|
||
|
||
//Get Presets:
|
||
allPresets = new Dictionary<string, DNPPreset[]>();
|
||
allPresets.Add("Style", Resources.LoadAll<DNPPreset>("DNP/Style"));
|
||
allPresets.Add("Fade In", Resources.LoadAll<DNPPreset>("DNP/Fade In"));
|
||
allPresets.Add("Fade Out", Resources.LoadAll<DNPPreset>("DNP/Fade Out"));
|
||
allPresets.Add("Behaviour", Resources.LoadAll<DNPPreset>("DNP/Behaviour"));
|
||
|
||
//Get Structural Objects:
|
||
textMeshPros = new TextMeshPro[damageNumbers.Length];
|
||
meshAs = new Transform[damageNumbers.Length];
|
||
meshBs = new Transform[damageNumbers.Length];
|
||
if(isMesh)
|
||
{
|
||
for (int n = 0; n < damageNumbers.Length; n++)
|
||
{
|
||
Transform dnTransform = damageNumbers[n].transform;
|
||
|
||
//TMP:
|
||
Transform textMeshProTransform = dnTransform.Find("TMP");
|
||
if (textMeshProTransform != null)
|
||
{
|
||
textMeshPros[n] = textMeshProTransform.GetComponent<TextMeshPro>();
|
||
}
|
||
|
||
//MeshA:
|
||
meshAs[n] = dnTransform.Find("MeshA");
|
||
|
||
//MeshB:
|
||
meshBs[n] = dnTransform.Find("MeshB");
|
||
}
|
||
}
|
||
|
||
//Get Banner Texture:
|
||
if (damageNumbers != null && damageNumbers.Length > 0 && damageNumbers[0] != null)
|
||
{
|
||
bannerTexture = Resources.Load<Texture>("DNP/Textures/DNP_Banner");
|
||
}
|
||
|
||
//Create White Box Texture:
|
||
Color[] pixels = new Color[4];
|
||
for (int n = 0; n < pixels.Length; n++)
|
||
{
|
||
pixels[n] = Color.white;
|
||
}
|
||
whiteBoxTexture = new Texture2D(2, 2);
|
||
whiteBoxTexture.SetPixels(pixels);
|
||
whiteBoxTexture.Apply();
|
||
|
||
//Close Hints:
|
||
hints = new HashSet<string>();
|
||
}
|
||
|
||
public static void OnInspectorGUI(DamageNumberEditor damageNumberEditor)
|
||
{
|
||
//Prepare Inspector:
|
||
if (damageNumbers == null || damageNumbers.Length == 0 || damageNumbers[0] == null)
|
||
{
|
||
PrepareInspector(damageNumberEditor);
|
||
}
|
||
|
||
//Prepare Styles:
|
||
PrepareStyles();
|
||
|
||
//Repaint:
|
||
if (repaintViews)
|
||
{
|
||
repaintViews = false;
|
||
UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
|
||
}
|
||
}
|
||
|
||
#region Inspector Top
|
||
public static void DrawInspectorTop(bool isMesh)
|
||
{
|
||
//Banner:
|
||
Rect bannerRect = DrawBanner(isMesh);
|
||
|
||
//Tabs:
|
||
DrawTabs(bannerRect);
|
||
|
||
//Distance:
|
||
EditorGUILayout.Space(42);
|
||
}
|
||
static Rect DrawBanner(bool isMesh)
|
||
{
|
||
Rect bannerRect = default;
|
||
if (bannerTexture != null)
|
||
{
|
||
//Banner:
|
||
EditorGUILayout.BeginVertical();
|
||
GUILayout.Label("", GUILayout.Height(100 + 0.38f * Mathf.Min(0,EditorGUIUtility.currentViewWidth - 430)));
|
||
bannerRect = GUILayoutUtility.GetLastRect();
|
||
float ratio = (bannerRect.width / bannerRect.height) / 8f;
|
||
Rect clipRect = new Rect((1 - ratio) * 0.5f, 0, ratio, 1);
|
||
GUI.DrawTextureWithTexCoords(bannerRect, bannerTexture, clipRect, true);
|
||
EditorGUILayout.EndVertical();
|
||
|
||
//Version Info:
|
||
Rect infoRect = new Rect(bannerRect);
|
||
infoRect.width -= 3;
|
||
infoRect.y += 4;
|
||
infoRect.height -= 8;
|
||
GUI.Label(infoRect, "<color=FFFFFF><b><size=10>v</size>" + DamageNumberEditor.version + " </b></color>", bottomRightTextStyle);
|
||
|
||
//Type Info:
|
||
GUI.Label(infoRect, "<color=FFFFFF><b>" + (isMesh ? "Mesh" : "GUI") + "<size=10> </size></b></color>", topRightTextStyle);
|
||
|
||
//Button:
|
||
Rect documentationRect = GUILayoutUtility.GetLastRect();
|
||
documentationRect.x += 9;
|
||
documentationRect.y += 9;
|
||
documentationRect.width = 56;
|
||
documentationRect.height = 18;
|
||
if (GUI.Button(documentationRect, "<b>Manual</b>", buttonStyle))
|
||
{
|
||
Application.OpenURL("https://ekincantas.com/damage-numbers-pro/");
|
||
}
|
||
documentationRect.y += 21;
|
||
if (GUI.Button(documentationRect, "<b>Discord</b>", buttonStyle))
|
||
{
|
||
Application.OpenURL("https://discord.gg/nWbRkN8Zxr");
|
||
}
|
||
|
||
//Box:
|
||
BoxLastRect();
|
||
|
||
EditorGUILayout.Space();
|
||
|
||
//Calculate Width for GUI Scaling:
|
||
float newWidth = GUILayoutUtility.GetLastRect().width;
|
||
if(newWidth > 50)
|
||
{
|
||
currentWidth = newWidth;
|
||
}
|
||
}
|
||
|
||
return bannerRect;
|
||
}
|
||
static void DrawTabs(Rect lastRect)
|
||
{
|
||
//Position:
|
||
lastRect.y += lastRect.height - 3;
|
||
lastRect.height = 29;
|
||
|
||
//Row 1:
|
||
int lastTab = currentTab;
|
||
|
||
currentTab = GUI.Toolbar(lastRect, currentTab, new string[] { "Main", "Text", "Fade In", "Fade Out" }, buttonStyle);
|
||
lastRect.height -= 1;
|
||
BoxRect(lastRect);
|
||
|
||
string rotAndScaleText = "Rotation & Size";
|
||
if(currentWidth < 388)
|
||
{
|
||
rotAndScaleText = "<size=11>Rotation & Size</size>";
|
||
|
||
if(currentWidth < 356)
|
||
{
|
||
rotAndScaleText = "<size=10>Rotation & Size</size>";
|
||
|
||
if (currentWidth < 324)
|
||
{
|
||
rotAndScaleText = "<size=9>Rotation & Size</size>";
|
||
|
||
if (currentWidth < 303)
|
||
{
|
||
rotAndScaleText = "<size=8>Rotation & Size</size>";
|
||
|
||
if (currentWidth < 276)
|
||
{
|
||
rotAndScaleText = "<size=7>Rotation & Size</size>";
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
string spamText = "Spam Control";
|
||
if(currentWidth < 340)
|
||
{
|
||
spamText = "<size=11>Spam Control</size>";
|
||
|
||
if (currentWidth < 324)
|
||
{
|
||
spamText = "<size=10>Spam Control</size>";
|
||
|
||
if (currentWidth < 304)
|
||
{
|
||
spamText = "<size=9>Spam Control</size>";
|
||
|
||
if (currentWidth < 367)
|
||
{
|
||
spamText = "<size=8>Spam Control</size>";
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
string performanceText = "Performance";
|
||
if(currentWidth < 336)
|
||
{
|
||
performanceText = "<size=11>Performance</size>";
|
||
|
||
if (currentWidth < 310)
|
||
{
|
||
performanceText = "<size=10>Performance</size>";
|
||
|
||
if (currentWidth < 292)
|
||
{
|
||
performanceText = "<size=9>Performance</size>";
|
||
}
|
||
}
|
||
}
|
||
|
||
string movementText = "Movement";
|
||
if(currentWidth < 293)
|
||
{
|
||
movementText = "<size=11>Movement</size>";
|
||
|
||
if (currentWidth < 282)
|
||
{
|
||
movementText = "<size=10>Movement</size>";
|
||
|
||
if (currentWidth < 263)
|
||
{
|
||
movementText = "<size=9>Movement</size>";
|
||
}
|
||
}
|
||
}
|
||
|
||
//Row 2:
|
||
lastRect.y += lastRect.height - 3;
|
||
lastRect.height = 22;
|
||
currentTab = 4 + GUI.Toolbar(lastRect, currentTab - 4, new string[] { movementText, rotAndScaleText, spamText, performanceText }, buttonStyle);
|
||
lastRect.height += 2;
|
||
|
||
//On Switch:
|
||
if (currentTab != lastTab)
|
||
{
|
||
EditorGUIUtility.keyboardControl = EditorGUIUtility.hotControl = 0;
|
||
hints = new HashSet<string>(); //Clear Hints.
|
||
}
|
||
|
||
//Box:
|
||
BoxRect(lastRect, true, false);
|
||
}
|
||
#endregion
|
||
|
||
#region Special Sections
|
||
public static void FinalInformation()
|
||
{
|
||
Color finalInformationColor = new Color(0.93f, 0.95f, 1);
|
||
|
||
GUIStyle linkStyle = new GUIStyle(labelStyle);
|
||
linkStyle.normal.textColor = linkStyle.focused.textColor = linkStyle.hover.textColor = EditorGUIUtility.isProSkin ? new Color(0.8f, 0.9f, 1f, 1) : new Color(0.1f, 0.2f, 0.4f, 1);
|
||
linkStyle.active.textColor = EditorGUIUtility.isProSkin ? new Color(0.6f, 0.8f, 1f, 1) : new Color(0.15f, 0.4f, 0.6f, 1);
|
||
|
||
EditorGUILayout.Space(2);
|
||
StartBox(finalInformationColor);
|
||
EditorGUILayout.BeginVertical();
|
||
|
||
GUI.color = new Color(1, 1, 1f, 0.75f);
|
||
if(currentWidth < 285)
|
||
{
|
||
if(currentWidth < 265)
|
||
{
|
||
Label("<size=10><b>Thank you for using Damage Numbers Pro.</b></size>");
|
||
}
|
||
else
|
||
{
|
||
Label("<size=11><b>Thank you for using Damage Numbers Pro.</b></size>");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
Label("<b>Thank you for using Damage Numbers Pro.</b>");
|
||
}
|
||
Label("<b>Contact me if you need any help.</b>");
|
||
EditorGUILayout.Space(8);
|
||
|
||
EditorGUILayout.BeginHorizontal();
|
||
GUI.color = new Color(1, 1, 1, 1);
|
||
|
||
//Link Shrinking:
|
||
string docLink = "https://ekincantas.com/damage-numbers-pro/";
|
||
if(currentWidth < 420f)
|
||
{
|
||
docLink = "https://ekincantas.com/damage-numbers...";
|
||
|
||
if (currentWidth < 398)
|
||
{
|
||
docLink = "https://ekincantas.com/damage...";
|
||
|
||
if (currentWidth < 340)
|
||
{
|
||
docLink = "https://ekincantas.com/...";
|
||
|
||
if(currentWidth < 293)
|
||
{
|
||
docLink = "Open Link";
|
||
}
|
||
}
|
||
}
|
||
}
|
||
string discordLink = "https://discord.gg/nWbRkN8Zxr";
|
||
if (currentWidth < 335f)
|
||
{
|
||
discordLink = "https://discord.gg/...";
|
||
|
||
if (currentWidth < 264)
|
||
{
|
||
discordLink = "Open Link";
|
||
}
|
||
}
|
||
|
||
EditorGUILayout.LabelField("<b>Documentation:</b>", labelStyle, GUILayout.Width(100));
|
||
if (GUILayout.Button("<b>" + docLink + "</b>", linkStyle))
|
||
{
|
||
Application.OpenURL("https://ekincantas.com/damage-numbers-pro/");
|
||
}
|
||
EditorGUILayout.EndHorizontal();
|
||
|
||
EditorGUILayout.BeginHorizontal();
|
||
GUI.color = new Color(1, 1, 1, 1);
|
||
EditorGUILayout.LabelField("<b>Discord:</b>", labelStyle, GUILayout.Width(100));
|
||
if (GUILayout.Button("<b>" + discordLink + "</b>", linkStyle))
|
||
{
|
||
Application.OpenURL("https://discord.gg/nWbRkN8Zxr");
|
||
}
|
||
EditorGUILayout.EndHorizontal();
|
||
|
||
EditorGUILayout.BeginHorizontal();
|
||
GUI.color = new Color(1, 1, 1, 1);
|
||
|
||
|
||
string emailPrefix = "<b>Email:</b>";
|
||
if(currentWidth < 259)
|
||
{
|
||
emailPrefix = "<size=11><b>Email:</b></size>";
|
||
|
||
if(currentWidth < 256)
|
||
{
|
||
emailPrefix = "<size=10><b>Email:</b></size>";
|
||
|
||
if (currentWidth < 254)
|
||
{
|
||
emailPrefix = "<size=9><b>Email:</b></size>";
|
||
}
|
||
}
|
||
}
|
||
|
||
EditorGUILayout.LabelField(emailPrefix, labelStyle, GUILayout.Width(100 + Mathf.Min(0,(currentWidth - 320))));
|
||
EditorGUILayout.SelectableLabel("<b>ekincantascontact@gmail.com</b>", linkStyle, GUILayout.Height(16));
|
||
EditorGUILayout.EndHorizontal();
|
||
|
||
EditorGUILayout.EndVertical();
|
||
GUI.backgroundColor = Color.white;
|
||
CloseBox(finalInformationColor);
|
||
EditorGUILayout.Space(5);
|
||
}
|
||
|
||
public static void Externalnspectors(bool isMesh, Object target)
|
||
{
|
||
EditorGUILayout.Space(2);
|
||
Lines();
|
||
|
||
Color externalInspectorColor = new Color(0.93f, 0.95f, 1);
|
||
|
||
EditorGUILayout.Space(2);
|
||
StartBox(externalInspectorColor);
|
||
GUI.backgroundColor = externalInspectorColor;
|
||
EditorGUILayout.BeginVertical();
|
||
|
||
bool editingPrefabPreview = EditingPrefabPreview(target);
|
||
|
||
if (editingPrefabPreview)
|
||
{
|
||
GUI.color = new Color(1, 1, 1f, 0.75f);
|
||
ScalingLabel("<b>Open</b> the prefab to access the <b>presets</b>, <b>material</b> and <b>text mesh pro</b> tabs.", 440);
|
||
OpenPrefabButton(target);
|
||
|
||
GUI.backgroundColor = Color.white;
|
||
EditorGUILayout.EndVertical();
|
||
CloseBox(externalInspectorColor);
|
||
return;
|
||
}
|
||
|
||
int previousEditor = currentEditor;
|
||
if (cleanEditor)
|
||
{
|
||
previousEditor = -1; //Force Clean
|
||
cleanEditor = false;
|
||
}
|
||
|
||
//Tab Names:
|
||
string textMeshProTab = "TextMeshPro";
|
||
string materialTab = "Material";
|
||
if (damageNumbers != null && damageNumbers.Length > 1)
|
||
{
|
||
textMeshProTab = damageNumbers.Length + " TextMeshPros";
|
||
materialTab = "Materials";
|
||
}
|
||
if(currentWidth < 266)
|
||
{
|
||
textMeshProTab = "<size=11>" + textMeshProTab + "</size>";
|
||
}
|
||
|
||
//Tab Rect:
|
||
GUILayout.BeginVertical();
|
||
GUILayout.Space(13);
|
||
GUILayout.EndVertical();
|
||
|
||
Rect tabRect = GUILayoutUtility.GetLastRect();
|
||
tabRect.x -= 5;
|
||
tabRect.width += 12;
|
||
tabRect.y -= 5;
|
||
tabRect.height = 25;
|
||
|
||
//Draw Tab:
|
||
currentEditor = GUI.Toolbar(tabRect, currentEditor, new string[] { "Presets", materialTab , textMeshProTab });
|
||
|
||
//Box Tab Rect:
|
||
tabRect.y += 23;
|
||
tabRect.height = 3;
|
||
tabRect.width -= 3;
|
||
|
||
if (currentEditor == 1)
|
||
{
|
||
EditorGUILayout.Space(14);
|
||
|
||
//Material:
|
||
if (previousEditor != 1)
|
||
{
|
||
ResetMaterials();
|
||
}
|
||
|
||
if (materialEditor != null)
|
||
{
|
||
materialEditor.DrawHeader();
|
||
materialEditor.OnInspectorGUI();
|
||
}
|
||
}
|
||
else if (currentEditor == 2)
|
||
{
|
||
EditorGUILayout.Space(14);
|
||
|
||
if (damageNumbers.Length > 1)
|
||
{
|
||
GUI.color = new Color(1, 1, 1, 0.7f);
|
||
Label("The fancy inspector does not work for <b>multiple</b> damage numbers.");
|
||
Label("You can also <b>manually select</b> the text-mesh-pro components.");
|
||
Label("- Sorry for the inconvenience.");
|
||
GUI.color = Color.white;
|
||
EditorGUILayout.Space(8);
|
||
}
|
||
|
||
if (isMesh)
|
||
{
|
||
//Text Mesh Pro:
|
||
if (previousEditor != 2)
|
||
{
|
||
if (textMeshProEditor != null)
|
||
{
|
||
Object.DestroyImmediate(textMeshProEditor);
|
||
}
|
||
textMeshProEditor = Editor.CreateEditor(textMeshPros, null);
|
||
}
|
||
|
||
//Editor:
|
||
if (textMeshProEditor != null)
|
||
{
|
||
textMeshProEditor.DrawHeader();
|
||
if (textMeshPros.Length > 1)
|
||
{
|
||
textMeshProEditor.DrawDefaultInspector();
|
||
}
|
||
else
|
||
{
|
||
textMeshProEditor.OnInspectorGUI();
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
//Text Mesh Pro:
|
||
if (previousEditor != 2)
|
||
{
|
||
if (textMeshProEditor != null)
|
||
{
|
||
Object.DestroyImmediate(textMeshProEditor);
|
||
}
|
||
|
||
TextMeshProUGUI[] tmps = new TextMeshProUGUI[damageNumbers.Length];
|
||
for(int i = 0; i < damageNumbers.Length; i++)
|
||
{
|
||
TMP_Text tmpText = damageNumbers[i].GetTextMesh();
|
||
|
||
if(tmpText.GetType() == typeof(TextMeshProUGUI))
|
||
{
|
||
tmps[i] = (TextMeshProUGUI)tmpText;
|
||
}
|
||
else
|
||
{
|
||
return;
|
||
}
|
||
}
|
||
|
||
textMeshProEditor = Editor.CreateEditor(tmps, null);
|
||
}
|
||
|
||
//Editor:
|
||
if (textMeshProEditor != null)
|
||
{
|
||
textMeshProEditor.DrawHeader();
|
||
if (textMeshPros.Length > 1)
|
||
{
|
||
textMeshProEditor.DrawDefaultInspector();
|
||
}
|
||
else
|
||
{
|
||
textMeshProEditor.OnInspectorGUI();
|
||
}
|
||
|
||
//Match both TMPs:
|
||
foreach(DamageNumber dn in damageNumbers)
|
||
{
|
||
TMP_Text[] tmps = dn.GetTextMeshs();
|
||
if(tmps.Length > 1)
|
||
{
|
||
EditorUtility.CopySerialized(((TextMeshProUGUI)tmps[0]), ((TextMeshProUGUI)tmps[1]));
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
EditorGUILayout.Space(14);
|
||
ShowPresets(isMesh);
|
||
}
|
||
|
||
EditorGUILayout.EndVertical();
|
||
GUI.backgroundColor = Color.white;
|
||
CloseBox(externalInspectorColor);
|
||
|
||
//Line under Tabs:
|
||
GUI.color = externalInspectorColor;
|
||
DrawOutlineBox(tabRect);
|
||
tabRect.width += 3;
|
||
DrawBox(tabRect);
|
||
GUI.color = Color.white;
|
||
}
|
||
public static void ResetMaterials()
|
||
{
|
||
List<Material> allMaterials = new List<Material>();
|
||
foreach (DamageNumber dn in damageNumbers)
|
||
{
|
||
dn.GetReferencesIfNecessary();
|
||
|
||
foreach (Material mat in dn.GetSharedMaterials())
|
||
{
|
||
if (allMaterials.Contains(mat) == false)
|
||
{
|
||
allMaterials.Add(mat);
|
||
}
|
||
}
|
||
}
|
||
|
||
currentMaterials = new Material[allMaterials.Count];
|
||
for (int n = 0; n < allMaterials.Count; n++)
|
||
{
|
||
currentMaterials[n] = allMaterials[n];
|
||
}
|
||
|
||
if (materialEditor != null)
|
||
{
|
||
Object.DestroyImmediate(materialEditor);
|
||
}
|
||
|
||
materialEditor = (MaterialEditor)Editor.CreateEditor(currentMaterials);
|
||
}
|
||
|
||
static void ShowPresets(bool isMesh)
|
||
{
|
||
PresetCategory("Style", isMesh);
|
||
EditorGUILayout.Space(12);
|
||
PresetCategory("Fade In", isMesh);
|
||
EditorGUILayout.Space(12);
|
||
PresetCategory("Fade Out", isMesh);
|
||
EditorGUILayout.Space(12);
|
||
PresetCategory("Behaviour", isMesh);
|
||
}
|
||
static void PresetCategory(string category, bool isMesh)
|
||
{
|
||
GUI.color = new Color(1, 1, 1, 0.7f);
|
||
EditorGUILayout.LabelField("<size=14><b> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - " + category + " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - </b></size>", centerTextStyle);
|
||
GUI.color = Color.white;
|
||
|
||
DNPPreset[] presets = allPresets[category];
|
||
|
||
if(presets == null || presets.Length == 0)
|
||
{
|
||
GUI.color = new Color(1, 1, 1, 0.7f);
|
||
Label("Presets could not be loaded.");
|
||
Label("Maybe you deleted or moved a folder ?");
|
||
GUI.color = Color.white;
|
||
return;
|
||
}
|
||
|
||
int buttonsPerRow = 4;
|
||
if(EditorGUIUtility.currentViewWidth < 440)
|
||
{
|
||
buttonsPerRow = 3;
|
||
|
||
if(EditorGUIUtility.currentViewWidth < 375)
|
||
{
|
||
buttonsPerRow = 2;
|
||
}
|
||
}
|
||
|
||
int currentCount = 0;
|
||
foreach (DNPPreset preset in presets)
|
||
{
|
||
//Check Applied:
|
||
bool isApplied = true;
|
||
foreach (DamageNumber dn in damageNumbers)
|
||
{
|
||
if(!preset.IsApplied(dn))
|
||
{
|
||
isApplied = false;
|
||
break;
|
||
}
|
||
}
|
||
if(isApplied)
|
||
{
|
||
GUI.enabled = false;
|
||
}
|
||
|
||
//Increase Count:
|
||
currentCount++;
|
||
if (currentCount % buttonsPerRow == 1)
|
||
{
|
||
if(currentCount > 1)
|
||
{
|
||
EditorGUILayout.EndHorizontal();
|
||
}
|
||
|
||
EditorGUILayout.BeginHorizontal();
|
||
GUILayout.Space(5);
|
||
}
|
||
|
||
//Apply Button:
|
||
if (GUILayout.Button(preset.name))
|
||
{
|
||
if(isMesh)
|
||
{
|
||
Object[] undoObjects = new Object[damageNumbers.Length + textMeshPros.Length];
|
||
for (int i = 0; i < damageNumbers.Length; i++)
|
||
{
|
||
undoObjects[i] = damageNumbers[i];
|
||
}
|
||
for (int i = 0; i < textMeshPros.Length; i++)
|
||
{
|
||
undoObjects[i + damageNumbers.Length] = textMeshPros[i];
|
||
}
|
||
|
||
Undo.RecordObjects(undoObjects, "Applied the [" + preset.name + "] " + category + " Preset.");
|
||
}
|
||
else
|
||
{
|
||
Object[] undoObjects = new Object[damageNumbers.Length * 3];
|
||
for (int i = 0; i < damageNumbers.Length; i += 3)
|
||
{
|
||
undoObjects[i] = damageNumbers[i];
|
||
undoObjects[i + 1] = damageNumbers[i].GetTextMeshs()[0];
|
||
undoObjects[i + 2] = damageNumbers[i].GetTextMeshs()[1];
|
||
}
|
||
|
||
Undo.RecordObjects(undoObjects, "Applied the [" + preset.name + "] " + category + " Preset.");
|
||
}
|
||
|
||
foreach(DamageNumber dn in damageNumbers)
|
||
{
|
||
preset.Apply(dn);
|
||
}
|
||
|
||
foreach(DamageNumber dn in damageNumbers)
|
||
{
|
||
dn.UpdateText();
|
||
}
|
||
}
|
||
|
||
//Reenable GUI:
|
||
GUI.enabled = true;
|
||
}
|
||
|
||
GUI.enabled = false;
|
||
GUI.color = new Color(0, 0, 0, 0);
|
||
int modulo = currentCount % buttonsPerRow;
|
||
if(modulo > 0)
|
||
{
|
||
for (int n = 0; n < buttonsPerRow - modulo; n++)
|
||
{
|
||
GUILayout.Button("- - - - -");
|
||
}
|
||
}
|
||
GUI.color = Color.white;
|
||
GUI.enabled = true;
|
||
|
||
EditorGUILayout.EndHorizontal();
|
||
}
|
||
#endregion
|
||
|
||
#region Structure
|
||
public static bool CheckStructure(DamageNumberEditor damageNumberEditor)
|
||
{
|
||
//Type:
|
||
bool isMesh = damageNumbers[0].IsMesh(); ;
|
||
|
||
//Check if structure is flawed.
|
||
bool isStructureFlawed = false;
|
||
bool isOutdated = false;
|
||
if(isMesh)
|
||
{
|
||
for (int n = 0; n < damageNumbers.Length; n++)
|
||
{
|
||
DamageNumber dn = damageNumbers[n];
|
||
TextMeshPro tmp = textMeshPros[n];
|
||
Transform meshA = meshAs[n];
|
||
Transform meshB = meshBs[n];
|
||
|
||
if (tmp == null || meshA == null || meshB == null)
|
||
{
|
||
isStructureFlawed = true;
|
||
|
||
if (dn.transform.Find("TextA") != null)
|
||
{
|
||
isOutdated = true;
|
||
}
|
||
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
for (int n = 0; n < damageNumbers.Length; n++)
|
||
{
|
||
DamageNumber dn = damageNumbers[n];
|
||
|
||
if (dn.transform.Find("TMPA") == null || dn.transform.Find("TMPB") == null)
|
||
{
|
||
isStructureFlawed = true;
|
||
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
//Create button to fix structure.
|
||
if (isStructureFlawed)
|
||
{
|
||
//Start Box:
|
||
StartBox(new Color(1, 1, 0.8f));
|
||
|
||
//Structure Build Button:
|
||
GUI.color = new Color(1, 1, 0.8f);
|
||
if (GUILayout.Button(isOutdated ? "Upgrade Structure" : "Build Structure", GUILayout.Width(140)))
|
||
{
|
||
if(isMesh)
|
||
{
|
||
foreach (DamageNumber dn in damageNumbers)
|
||
{
|
||
PrepareMeshStructure(dn.gameObject);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
foreach (DamageNumber dn in damageNumbers)
|
||
{
|
||
PrepareGUIStructure(dn.gameObject);
|
||
}
|
||
}
|
||
|
||
PrepareInspector(damageNumberEditor);
|
||
}
|
||
|
||
//Text:
|
||
GUI.color = new Color(1, 1, 1, 0.7f);
|
||
if (isOutdated)
|
||
{
|
||
EditorGUILayout.LabelField("Version 4.0 has changed the structure of damage numbers.", labelStyle);
|
||
EditorGUILayout.LabelField("Click the button above to <b>upgrade</b> this damage number.", labelStyle);
|
||
}
|
||
else
|
||
{
|
||
EditorGUILayout.LabelField("Important components are missing.", labelStyle);
|
||
EditorGUILayout.LabelField("Click the button above to <b>prepare</b> this damage number.", labelStyle);
|
||
}
|
||
|
||
//Close Box:
|
||
CloseBox(new Color(1, 1, 0.7f));
|
||
EditorGUILayout.Space();
|
||
return true;
|
||
}
|
||
else
|
||
{
|
||
return false;
|
||
}
|
||
}
|
||
public static void PrepareMeshStructure(GameObject go)
|
||
{
|
||
//Add Sorting Group:
|
||
if (go.GetComponent<SortingGroup>() == null)
|
||
{
|
||
go.AddComponent<SortingGroup>().sortingOrder = 1000;
|
||
}
|
||
|
||
//Rename TextA to TMP:
|
||
Transform textA = go.transform.Find("TextA");
|
||
if (textA != null)
|
||
{
|
||
textA.gameObject.name = "TMP";
|
||
}
|
||
|
||
//Destroy TextB:
|
||
if (go.transform.Find("TextB"))
|
||
{
|
||
MonoBehaviour.DestroyImmediate(go.transform.Find("TextB").gameObject, true);
|
||
}
|
||
|
||
//Create TMP:
|
||
if (go.transform.Find("TMP") == null)
|
||
{
|
||
NewTextMesh("TMP", go.transform);
|
||
}
|
||
|
||
//Create MeshA:
|
||
if (go.transform.Find("MeshA") == null)
|
||
{
|
||
DamageNumber.NewMesh("MeshA", go.transform);
|
||
}
|
||
|
||
//Create MeshB:
|
||
if (go.transform.Find("MeshB") == null)
|
||
{
|
||
DamageNumber.NewMesh("MeshB", go.transform);
|
||
}
|
||
|
||
//Undo:
|
||
Undo.RegisterCreatedObjectUndo(go, "Create new Damage Number (Mesh).");
|
||
}
|
||
public static void PrepareGUIStructure(GameObject go)
|
||
{
|
||
//Create TMP:
|
||
if (go.transform.Find("TMPA") == null)
|
||
{
|
||
NewTextGUI("TMPA", go.transform);
|
||
}
|
||
if (go.transform.Find("TMPB") == null)
|
||
{
|
||
NewTextGUI("TMPB", go.transform);
|
||
}
|
||
|
||
//Add Rect Component:
|
||
if(go.GetComponent<RectTransform>() == null)
|
||
{
|
||
go.AddComponent<RectTransform>();
|
||
}
|
||
|
||
//Undo:
|
||
Undo.RegisterCreatedObjectUndo(go, "Create new Damage Number (GUI).");
|
||
}
|
||
|
||
public static GameObject NewTextMesh(string tmName, Transform parent)
|
||
{
|
||
//GameObject:
|
||
GameObject newTM = new GameObject();
|
||
newTM.name = tmName;
|
||
|
||
//TextMeshPro:
|
||
TextMeshPro tmp = newTM.AddComponent<TextMeshPro>();
|
||
tmp.fontSize = 5;
|
||
tmp.verticalAlignment = VerticalAlignmentOptions.Middle;
|
||
tmp.horizontalAlignment = HorizontalAlignmentOptions.Center;
|
||
tmp.text = "1";
|
||
tmp.enableWordWrapping = false;
|
||
|
||
//Size Delta:
|
||
RectTransform rectTransform = tmp.GetComponent<RectTransform>();
|
||
if (rectTransform != null)
|
||
{
|
||
rectTransform.sizeDelta = new Vector2(4, 2);
|
||
}
|
||
|
||
//Transform:
|
||
newTM.transform.SetParent(parent, true);
|
||
newTM.transform.localPosition = Vector3.zero;
|
||
newTM.transform.localScale = Vector3.one;
|
||
newTM.transform.localEulerAngles = Vector3.zero;
|
||
|
||
return newTM;
|
||
}
|
||
|
||
public static GameObject NewTextGUI(string tmName, Transform parent)
|
||
{
|
||
//GameObject:
|
||
GameObject newTM = new GameObject();
|
||
newTM.name = tmName;
|
||
|
||
//TextMeshPro:
|
||
TextMeshProUGUI tmp = newTM.AddComponent<TextMeshProUGUI>();
|
||
tmp.fontSize = 30;
|
||
tmp.verticalAlignment = VerticalAlignmentOptions.Middle;
|
||
tmp.horizontalAlignment = HorizontalAlignmentOptions.Center;
|
||
tmp.text = "1";
|
||
tmp.enableWordWrapping = false;
|
||
tmp.raycastTarget = false;
|
||
|
||
//Size Delta:
|
||
RectTransform rectTransform = tmp.GetComponent<RectTransform>();
|
||
if (rectTransform != null)
|
||
{
|
||
rectTransform.sizeDelta = new Vector2(4, 2);
|
||
}
|
||
|
||
//Transform:
|
||
newTM.transform.SetParent(parent, true);
|
||
newTM.transform.localPosition = Vector3.zero;
|
||
newTM.transform.localScale = Vector3.one;
|
||
newTM.transform.localEulerAngles = Vector3.zero;
|
||
|
||
return newTM;
|
||
}
|
||
public static void FixTextMeshPro()
|
||
{
|
||
bool destroyedSomething = false;
|
||
foreach (TextMeshPro textMesh in textMeshPros)
|
||
{
|
||
Transform tmp = textMesh.transform;
|
||
tmp.localPosition = Vector3.zero;
|
||
|
||
tmp.gameObject.SetActive(true);
|
||
for (int n = 0; n < tmp.childCount; n++)
|
||
{
|
||
DestroyOrDisable(tmp.GetChild(n).gameObject);
|
||
destroyedSomething = true;
|
||
}
|
||
tmp.gameObject.SetActive(false);
|
||
}
|
||
|
||
foreach(Transform meshA in meshAs)
|
||
{
|
||
for(int n = 0; n < meshA.childCount; n++)
|
||
{
|
||
Transform child = meshA.GetChild(n);
|
||
if(child.GetComponent<MeshRenderer>() != null)
|
||
{
|
||
destroyedSomething = true;
|
||
DestroyOrDisable(child.gameObject);
|
||
}
|
||
}
|
||
}
|
||
|
||
foreach (Transform meshB in meshBs)
|
||
{
|
||
for (int n = 0; n < meshB.childCount; n++)
|
||
{
|
||
Transform child = meshB.GetChild(n);
|
||
if (child.GetComponent<MeshRenderer>() != null)
|
||
{
|
||
destroyedSomething = true;
|
||
DestroyOrDisable(child.gameObject);
|
||
}
|
||
}
|
||
}
|
||
|
||
if(destroyedSomething)
|
||
{
|
||
foreach(DamageNumber dn in damageNumbers)
|
||
{
|
||
dn.GetReferences();
|
||
}
|
||
}
|
||
}
|
||
|
||
private static void DestroyOrDisable(GameObject go)
|
||
{
|
||
if (PrefabUtility.IsPartOfNonAssetPrefabInstance(go))
|
||
{
|
||
go.SetActive(false);
|
||
}
|
||
else
|
||
{
|
||
Object.DestroyImmediate(go);
|
||
}
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region Miscellaneous
|
||
public static void BeginInspector()
|
||
{
|
||
EditorGUILayout.BeginHorizontal();
|
||
EditorGUILayout.BeginVertical();
|
||
}
|
||
public static void EndInspector()
|
||
{
|
||
EditorGUILayout.EndVertical();
|
||
EditorGUILayout.Space(2);
|
||
EditorGUILayout.EndHorizontal();
|
||
}
|
||
static void PrepareStyles()
|
||
{
|
||
if(generatedGUIStyles)
|
||
{
|
||
return;
|
||
}
|
||
|
||
//Label:
|
||
labelStyle = new GUIStyle(GUI.skin.label);
|
||
labelStyle.richText = true;
|
||
|
||
//Button:
|
||
buttonStyle = new GUIStyle(GUI.skin.button);
|
||
buttonStyle.richText = true;
|
||
buttonStyle.alignment = TextAnchor.MiddleCenter;
|
||
|
||
//Right Anchor:
|
||
rightTextStyle = new GUIStyle(labelStyle);
|
||
rightTextStyle.alignment = TextAnchor.MiddleRight;
|
||
|
||
//Center Anchor:
|
||
centerTextStyle = new GUIStyle(labelStyle);
|
||
centerTextStyle.alignment = TextAnchor.MiddleCenter;
|
||
|
||
//Bottom Right Anchor:
|
||
bottomRightTextStyle = new GUIStyle(labelStyle);
|
||
bottomRightTextStyle.alignment = TextAnchor.LowerRight;
|
||
|
||
//Top Right Anchor:
|
||
topRightTextStyle = new GUIStyle(labelStyle);
|
||
topRightTextStyle.alignment = TextAnchor.UpperRight;
|
||
|
||
//White Box:
|
||
whiteBoxStyle = new GUIStyle(GUI.skin.box);
|
||
whiteBoxStyle.normal.background = whiteBoxStyle.onNormal.background = whiteBoxStyle.active.background =
|
||
whiteBoxStyle.onActive.background = whiteBoxStyle.focused.background = whiteBoxStyle.onFocused.background =
|
||
whiteBoxStyle.hover.background = whiteBoxStyle.onHover.background = whiteBoxTexture;
|
||
|
||
//Rich Everything:
|
||
for(int n = 0; n < GUI.skin.customStyles.Length; n++)
|
||
{
|
||
if(GUI.skin.customStyles[n] != null)
|
||
{
|
||
GUI.skin.customStyles[n].richText = true;
|
||
}
|
||
}
|
||
|
||
//Finish:
|
||
generatedGUIStyles = true;
|
||
}
|
||
public static bool HintButton(string category)
|
||
{
|
||
bool toggled = hints.Contains(category);
|
||
|
||
string buttonName = toggled ? "<size=8> </size><b>?</b>" : "?";
|
||
|
||
if (GUILayout.Button(buttonName, buttonStyle, GUILayout.Width(21)))
|
||
{
|
||
if (hints.Contains(category))
|
||
{
|
||
hints.Remove(category);
|
||
}
|
||
else
|
||
{
|
||
hints.Add(category);
|
||
}
|
||
|
||
toggled = !toggled;
|
||
}
|
||
|
||
if (toggled)
|
||
{
|
||
GUI.color = new Color(1, 1, 1, 0.8f);
|
||
GUI.Toolbar(GUILayoutUtility.GetLastRect(), 0, new string[] { buttonName }, buttonStyle);
|
||
GUI.color = new Color(1, 1, 1, 1f);
|
||
}
|
||
|
||
return toggled;
|
||
}
|
||
public static void RepaintInspector()
|
||
{
|
||
repaintViews = true;
|
||
GUI.FocusControl("");
|
||
}
|
||
|
||
public static bool EditingPrefabPreview(Object target)
|
||
{
|
||
return EditorUtility.IsPersistent(target) && PrefabStageUtility.GetCurrentPrefabStage() == null;
|
||
}
|
||
|
||
public static void OpenPrefabButton(Object target)
|
||
{
|
||
GUI.color = Color.white;
|
||
if (GUILayout.Button("Click here to open the prefab."))
|
||
{
|
||
try
|
||
{
|
||
PrefabStageUtility.OpenPrefab(AssetDatabase.GetAssetPath(target));
|
||
}
|
||
catch
|
||
{
|
||
EditorUtility.DisplayDialog("Something went wrong.", "Please open the prefab manually, by double-clicking it in the project window.", "Okay");
|
||
}
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region Label Utility
|
||
public static void Lines()
|
||
{
|
||
GUI.color = new Color(1, 1, 1, 0.5f);
|
||
EditorGUILayout.LabelField("− − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − −", GUILayout.Height(7f));
|
||
GUI.color = new Color(1, 1, 1, 1f);
|
||
}
|
||
public static void Label(string text)
|
||
{
|
||
EditorGUILayout.LabelField(text, labelStyle);
|
||
}
|
||
|
||
public static void ScalingLabel(string text, float scaleWidth)
|
||
{
|
||
int size = Mathf.FloorToInt(Mathf.Clamp(12 * Mathf.Pow(DNPEditorInternal.currentWidth / scaleWidth, 1.525f), 9, 12));
|
||
Label("<size=" + size + ">" + text + "</size>");
|
||
}
|
||
|
||
public static string CheckmarkString(bool state)
|
||
{
|
||
if(EditorGUIUtility.isProSkin)
|
||
{
|
||
return state ? "<size=15><b><color=#00FF00>✓</color></b></size>" : "<size=16><b><color=#FF0000>✗</color></b></size>";
|
||
}
|
||
else
|
||
{
|
||
return state ? "<size=15><b><color=#00BB00>✓</color></b></size>" : "<size=16><b><color=#BB0000>✗</color></b></size>";
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region Box Utility
|
||
public static void StartBox(Color color, bool isActivated = true)
|
||
{
|
||
GUI.color = color;
|
||
StartBox(isActivated);
|
||
GUI.color = Color.white;
|
||
}
|
||
public static void StartBox(bool isActivated = true)
|
||
{
|
||
//Start Box:
|
||
if (EditorGUIUtility.isProSkin)
|
||
{
|
||
if (isActivated)
|
||
{
|
||
GUI.backgroundColor = new Color(0.3f, 0.3f, 0.3f, 1);
|
||
}
|
||
else
|
||
{
|
||
GUI.backgroundColor = new Color(0.25f, 0.25f, 0.25f, 1);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (isActivated)
|
||
{
|
||
GUI.backgroundColor = new Color(0.68f, 0.68f, 0.68f, 1);
|
||
}
|
||
else
|
||
{
|
||
GUI.backgroundColor = new Color(0.72f, 0.72f, 0.72f, 1);
|
||
}
|
||
}
|
||
GUILayout.BeginHorizontal(whiteBoxStyle);
|
||
GUILayout.Space(5);
|
||
GUILayout.BeginVertical();
|
||
GUILayout.Space(5);
|
||
GUI.backgroundColor = Color.white;
|
||
}
|
||
public static void CloseBox(Color color, bool isActivated = true)
|
||
{
|
||
GUI.color = color;
|
||
CloseBox(isActivated);
|
||
GUI.color = Color.white;
|
||
}
|
||
public static void CloseBox(bool isActivated = true)
|
||
{
|
||
GUILayout.Space(5);
|
||
EditorGUILayout.EndVertical();
|
||
GUILayout.Space(5);
|
||
EditorGUILayout.EndHorizontal();
|
||
Rect lastRect = GUILayoutUtility.GetLastRect();
|
||
lastRect.width -= 2;
|
||
BoxLastRect(isActivated);
|
||
}
|
||
static void BoxLastRect(bool isActivated = true)
|
||
{
|
||
Rect lastRect = GUILayoutUtility.GetLastRect();
|
||
BoxRect(lastRect, isActivated);
|
||
}
|
||
static void BoxRect(Rect targetRect, bool isActivated = true, bool withTop = true)
|
||
{
|
||
Rect leftBar = new Rect(targetRect);
|
||
leftBar.width = 3;
|
||
|
||
Rect rightBar = new Rect(targetRect);
|
||
rightBar.x += rightBar.width - 3;
|
||
rightBar.width = 3;
|
||
|
||
Rect topBar = new Rect(targetRect);
|
||
topBar.height = 3;
|
||
topBar.x += 3;
|
||
topBar.width -= 6;
|
||
|
||
Rect bottomBar = new Rect(targetRect);
|
||
bottomBar.y += bottomBar.height - 3;
|
||
bottomBar.height = 3;
|
||
bottomBar.x += 3;
|
||
bottomBar.width -= 6;
|
||
|
||
DrawOutlineBox(leftBar, isActivated);
|
||
DrawOutlineBox(rightBar, isActivated);
|
||
DrawOutlineBox(bottomBar, isActivated);
|
||
if (withTop)
|
||
{
|
||
DrawOutlineBox(topBar, isActivated);
|
||
}
|
||
|
||
DrawBox(leftBar, isActivated);
|
||
DrawBox(rightBar, isActivated);
|
||
DrawBox(bottomBar, isActivated);
|
||
if (withTop)
|
||
{
|
||
DrawBox(topBar, isActivated);
|
||
}
|
||
}
|
||
static void DrawBox(Rect rectPosition, bool isActivated = true)
|
||
{
|
||
Color boxColor = default;
|
||
|
||
if (EditorGUIUtility.isProSkin)
|
||
{
|
||
if (isActivated)
|
||
{
|
||
boxColor = new Color(0.66f, 0.66f, 0.66f, 1);
|
||
}
|
||
else
|
||
{
|
||
boxColor = new Color(0.38f, 0.38f, 0.38f, 1);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (isActivated)
|
||
{
|
||
boxColor = new Color(0.55f, 0.55f, 0.55f, 1);
|
||
}
|
||
else
|
||
{
|
||
boxColor = new Color(0.67f, 0.67f, 0.67f, 1);
|
||
}
|
||
}
|
||
|
||
DrawBox(rectPosition, boxColor);
|
||
}
|
||
static void DrawBox(Rect rectPosition, Color boxColor)
|
||
{
|
||
GUI.backgroundColor = boxColor;
|
||
GUI.Box(rectPosition, "", whiteBoxStyle);
|
||
GUI.backgroundColor = Color.white;
|
||
}
|
||
static void DrawOutlineBox(Rect rectPosition, bool isActivated = true)
|
||
{
|
||
//Adjust Position:
|
||
rectPosition.width += 2;
|
||
rectPosition.height += 2;
|
||
|
||
//Draw Box:
|
||
if (EditorGUIUtility.isProSkin)
|
||
{
|
||
if (isActivated)
|
||
{
|
||
DrawBox(rectPosition, new Color(0.24f, 0.24f, 0.24f, 1));
|
||
}
|
||
else
|
||
{
|
||
DrawBox(rectPosition, new Color(0.21f, 0.21f, 0.21f, 1));
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (isActivated)
|
||
{
|
||
DrawBox(rectPosition, new Color(0.35f, 0.35f, 0.35f, 1));
|
||
}
|
||
else
|
||
{
|
||
DrawBox(rectPosition, new Color(0.5f, 0.5f, 0.5f, 1));
|
||
}
|
||
}
|
||
}
|
||
#endregion
|
||
}
|
||
}
|
||
|
||
#endif |