| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | using UnityEditor;using UnityEngine;namespace XNodeEditor {    public static class NodeEditorResources {        // Textures        public static Texture2D dot { get { return _dot != null ? _dot : _dot = Resources.Load<Texture2D>("xnode_dot"); } }        private static Texture2D _dot;        public static Texture2D dotOuter { get { return _dotOuter != null ? _dotOuter : _dotOuter = Resources.Load<Texture2D>("xnode_dot_outer"); } }        private static Texture2D _dotOuter;        public static Texture2D nodeBody { get { return _nodeBody != null ? _nodeBody : _nodeBody = Resources.Load<Texture2D>("xnode_node"); } }        private static Texture2D _nodeBody;        public static Texture2D nodeHighlight { get { return _nodeHighlight != null ? _nodeHighlight : _nodeHighlight = Resources.Load<Texture2D>("xnode_node_highlight"); } }        private static Texture2D _nodeHighlight;        // Styles        public static Styles styles { get { return _styles != null ? _styles : _styles = new Styles(); } }        public static Styles _styles = null;        public static GUIStyle OutputPort { get { return new GUIStyle(EditorStyles.label) { alignment = TextAnchor.UpperRight }; } }        public class Styles {            public GUIStyle inputPort, nodeHeader, nodeBody, tooltip, nodeHighlight;            public Styles() {                GUIStyle baseStyle = new GUIStyle("Label");                baseStyle.fixedHeight = 18;                inputPort = new GUIStyle(baseStyle);                inputPort.alignment = TextAnchor.UpperLeft;                inputPort.padding.left = 10;                nodeHeader = new GUIStyle();                nodeHeader.alignment = TextAnchor.MiddleCenter;                nodeHeader.fontStyle = FontStyle.Bold;                nodeHeader.normal.textColor = Color.white;                nodeBody = new GUIStyle();                nodeBody.normal.background = NodeEditorResources.nodeBody;                nodeBody.border = new RectOffset(32, 32, 32, 32);                nodeBody.padding = new RectOffset(16, 16, 4, 16);                nodeHighlight = new GUIStyle();                nodeHighlight.normal.background = NodeEditorResources.nodeHighlight;                nodeHighlight.border = new RectOffset(32, 32, 32, 32);                tooltip = new GUIStyle("helpBox");                tooltip.alignment = TextAnchor.MiddleCenter;            }        }        public static Texture2D GenerateGridTexture(Color line, Color bg) {            Texture2D tex = new Texture2D(64, 64);            Color[] cols = new Color[64 * 64];            for (int y = 0; y < 64; y++) {                for (int x = 0; x < 64; x++) {                    Color col = bg;                    if (y % 16 == 0 || x % 16 == 0) col = Color.Lerp(line, bg, 0.65f);                    if (y == 63 || x == 63) col = Color.Lerp(line, bg, 0.35f);                    cols[(y * 64) + x] = col;                }            }            tex.SetPixels(cols);            tex.wrapMode = TextureWrapMode.Repeat;            tex.filterMode = FilterMode.Bilinear;            tex.name = "Grid";            tex.Apply();            return tex;        }        public static Texture2D GenerateCrossTexture(Color line) {            Texture2D tex = new Texture2D(64, 64);            Color[] cols = new Color[64 * 64];            for (int y = 0; y < 64; y++) {                for (int x = 0; x < 64; x++) {                    Color col = line;                    if (y != 31 && x != 31) col.a = 0;                    cols[(y * 64) + x] = col;                }            }            tex.SetPixels(cols);            tex.wrapMode = TextureWrapMode.Clamp;            tex.filterMode = FilterMode.Bilinear;            tex.name = "Grid";            tex.Apply();            return tex;        }    }}
 |