Exemple #1
0
        private void Connect(AssemblyDataNode node1, AssemblyDataNode node2)
        {
            if (node1 == null)
            {
                return;
            }
            if (node2 == null)
            {
                return;
            }

            var start    = new Vector3(node1.rect.x + node1.rect.width, node1.rect.y + node1.rect.height / 2f, 0f);
            var startTan = start + new Vector3(100f, 0f, 0f);

            var end    = new Vector3(node2.rect.x, node2.rect.y + node2.rect.height / 2f, 0f);
            var endTan = end + new Vector3(-100f, 0f, 0f);

            Handles.DrawBezier(start, end, startTan, endTan, Color.gray, null, 3f);

            float   texSize = 8f;
            Texture tex     = EditorGUIUtility.Load("icons/curvekeyframesemiselectedoverlay.png") as Texture2D;

            EditorGUI.DrawPreviewTexture(
                new Rect(
                    node2.rect.x - texSize,
                    node2.rect.y + node2.rect.height / 2f - texSize / 2f,
                    texSize, texSize),
                tex);
        }
Exemple #2
0
        private void WindowCallback(AssemblyDataNode dataNode)
        {
            GUILayout.BeginHorizontal();
            if (GUILayout.Button("ignore"))
            {
                ignoreNodeList.Add(dataNode.name);
            }

            if (GUILayout.Button("ping"))
            {
                Selection.activeObject = dataNode.textAsset;
                EditorGUIUtility.PingObject(dataNode.textAsset);
            }

            GUILayout.EndHorizontal();
        }
Exemple #3
0
        private void OnDrawNode(AssemblyDataNode parent, AssemblyDataNode[] assemblyDatasNode, int depth)
        {
            foreach (var assemblyData in assemblyDatasNode)
            {
                if (assemblyData == null)
                {
                    continue;
                }

                if (ignoreNodeList.Find(n => n == assemblyData.name) != null)
                {
                    continue;
                }

                if (!assemblyData.isDraw)
                {
                    Rect rect = new Rect(
                        100f + (200f + 100f) * depth,
                        10f + (60f + 10f) * drawNodeY,
                        200f,
                        60f);

                    drawSize.width  = Mathf.Max(rect.xMax, drawSize.width);
                    drawSize.height = Mathf.Max(rect.yMax, drawSize.height);

                    assemblyData.Draw(nodeId, rect, WindowCallback);
                    nodeId++;

                    //線を書く
                    Connect(parent, assemblyData);

                    OnDrawNode(assemblyData, assemblyData.referenceList, depth + 1);
                    drawNodeY++;
                }
                else
                {
                    //線を書く
                    Connect(parent, assemblyData);
                    OnDrawNode(assemblyData, assemblyData.referenceList, depth + 1);
                }
            }
        }