From 21e186f75b504d832d9c7bef0456edd7d5d3155e Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 8 Sep 2021 10:52:35 +0800 Subject: +behavior design --- .../Editor/StyledMaterial/StyledBannerDrawer.cs | 95 ++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 Assets/Art/BOXOPHOBIC/Utils/Editor/StyledMaterial/StyledBannerDrawer.cs (limited to 'Assets/Art/BOXOPHOBIC/Utils/Editor/StyledMaterial/StyledBannerDrawer.cs') diff --git a/Assets/Art/BOXOPHOBIC/Utils/Editor/StyledMaterial/StyledBannerDrawer.cs b/Assets/Art/BOXOPHOBIC/Utils/Editor/StyledMaterial/StyledBannerDrawer.cs new file mode 100644 index 00000000..fe4e53d6 --- /dev/null +++ b/Assets/Art/BOXOPHOBIC/Utils/Editor/StyledMaterial/StyledBannerDrawer.cs @@ -0,0 +1,95 @@ +// Cristian Pop - https://boxophobic.com/ + +using UnityEngine; +using UnityEditor; +using Boxophobic.Constants; + +namespace Boxophobic.StyledGUI +{ + public class StyledBannerDrawer : MaterialPropertyDrawer + { + public string title; + public string subtitle; + + public StyledBannerDrawer(string title, string subtitle) + { + this.title = title; + this.subtitle = subtitle; + } + + public StyledBannerDrawer(string title) + { + this.title = title; + this.subtitle = ""; + } + + public override void OnGUI(Rect position, MaterialProperty prop, string label, MaterialEditor materialEditor) + { + //EditorGUI.DrawRect(position, new Color(0, 1, 0, 0.05f)); + + Material material = materialEditor.target as Material; + + DrawBanner(material.shader); + } + + public override float GetPropertyHeight(MaterialProperty prop, string label, MaterialEditor editor) + { + return -2; + } + + void DrawBanner(Shader shader) + { + GUILayout.Space(10); + + var bannerFullRect = GUILayoutUtility.GetRect(0, 0, 40, 0); + var bannerBeginRect = new Rect(bannerFullRect.position.x, bannerFullRect.position.y, 20, 40); + var bannerMiddleRect = new Rect(bannerFullRect.position.x + 20, bannerFullRect.position.y, bannerFullRect.xMax - 54, 40); + var bannerEndRect = new Rect(bannerFullRect.xMax - 20, bannerFullRect.position.y, 20, 40); + //var iconRect = new Rect(bannerFullRect.xMax - 36, bannerFullRect.position.y + 5, 30, 30); + + Color bannerColor; + Color guiColor; + + if (EditorGUIUtility.isProSkin) + { + bannerColor = CONSTANT.ColorDarkGray; + guiColor = CONSTANT.ColorLightGray; + } + else + { + bannerColor = CONSTANT.ColorLightGray; + guiColor = CONSTANT.ColorDarkGray; + } + + GUI.color = bannerColor; + + GUI.DrawTexture(bannerBeginRect, CONSTANT.BannerImageBegin, ScaleMode.StretchToFill, true); + GUI.DrawTexture(bannerMiddleRect, CONSTANT.BannerImageMiddle, ScaleMode.StretchToFill, true); + GUI.DrawTexture(bannerEndRect, CONSTANT.BannerImageEnd, ScaleMode.StretchToFill, true); + +#if UNITY_2019_3_OR_NEWER + GUI.Label(bannerFullRect, "" + title + "" + " " + subtitle + "", CONSTANT.TitleStyle); +#else + GUI.Label(bannerFullRect, "" + title + " " + subtitle + "", CONSTANT.TitleStyle); +#endif + +// GUI.color = guiColor; + +//#if AMPLIFY_SHADER_EDITOR +// if (GUI.Button(iconRect, CONSTANT.IconEdit, new GUIStyle { alignment = TextAnchor.MiddleCenter })) +// { +// AmplifyShaderEditor.AmplifyShaderEditorWindow.ConvertShaderToASE(Shader.Find(shader.name)); +// } +//#else +// if (GUI.Button(iconRect, CONSTANT.IconEdit, new GUIStyle { alignment = TextAnchor.MiddleCenter })) +// { +// AssetDatabase.OpenAsset(Shader.Find(shader.name), 1); +// } +//#endif + + GUI.color = Color.white; + + GUILayout.Space(10); + } + } +} -- cgit v1.1-26-g67d0