コード例 #1
0
        public static void DrawNodeConnectionSmooth(ConnectionDrawData data)
        {
            Handles.BeginGUI();
            Color shadowCol = new Color(0.2f, 0.2f, 0.2f, 0.06f) * Color.black;

            var from_diff = (data.from - data.fromOrigin).normalized;
            var to_diff   = (data.to - data.toOrigin).normalized;

            var from_dir = new Vector3(from_diff.x, from_diff.y, 0);
            var to_dir   = new Vector3(to_diff.x, to_diff.y, 0);

            Vector3 startPos = new Vector3(data.from.x, data.from.y, 0.0f);
            Vector3 endPos   = new Vector3(data.to.x, data.to.y, 0.0f);

            var angle = Mathf.Lerp(10, 90, Vector2.Distance(startPos, endPos) / 300);

            Vector3 startTan = startPos + from_dir * angle;
            Vector3 endTan   = endPos + to_dir * angle;

            for (int i = 0; i < 3; i++)
            {
                Handles.DrawBezier(startPos, endPos, startTan, endTan, shadowCol, null, (i + 1) * 5);
            }

            Handles.DrawBezier(startPos, endPos, startTan, endTan, data.color, null, 2.0f);
            Handles.EndGUI();
        }
コード例 #2
0
//        void HandleConnectionMenu(GraphNode action, int index)
//        {
//            GenericMenu menu = new GenericMenu();
//
//            if (index > 0)
//            {
//                int i = 0;
//                foreach (GraphNode.ConnectionInfo connection in action.connectedTo.Where(c => c.IndexFrom == index))
//                {
//                    menu.AddItem(new GUIContent(++i + ") Remove connection to '" + connection.Node.Name + "' ..."), false, CreateRemoveConnectionCallback(action, connection));
//                }
//            }
//
//            menu.ShowAsContext();
//        }

        /*[Obsolete("Deprecated, use StartConnection(BaseNode node)")]
         * void HandleConnection(GraphNode actionNode, int result)
         * {
         *  if (result == 0)
         *      return;
         *
         *  switch (Event.current.button)
         *  {
         *      case 0:
         *          if (!IsConnecting)
         *          {
         *              connectIndex = result;
         *              IsConnecting = true;
         *              SelectedNode = actionNode;
         *          }
         *          else if ((int)Mathf.Sign(connectIndex) != (int)Mathf.Sign(result))
         *          {
         *              if (connectIndex > 0 && GraphNode.CanMakeConnection(SelectedNode, connectIndex, actionNode, result))
         *              {
         *                  GraphNode.MakeConnection(SelectedNode, connectIndex, actionNode, result);
         *              }
         *              else if (connectIndex < 0 && GraphNode.CanMakeConnection(actionNode, result, SelectedNode, connectIndex))
         *              {
         *                  GraphNode.MakeConnection(actionNode, result, SelectedNode, connectIndex);
         *              }
         *
         *              connectIndex = 0;
         *              IsConnecting = false;
         *              SelectedNode = null;
         *          }
         *          break;
         *      case 1:
         *          HandleConnectionMenu(actionNode, result);
         *          break;
         *      default:
         *          break;
         *  }
         * }*/

        public void DrawNodeConnectionStyled(ConnectionDrawData data)
        {
            switch (ConnectionLineStyle)
            {
            case ConnectionStyle.BezierVertical:
                DrawNodeConnectionBezierVertical(data.from, data.to, data.color);
                break;

            case ConnectionStyle.BezierHorizontal:
                DrawNodeConnectionBezierHorizontal(data.from, data.to, data.color);
                break;

            case ConnectionStyle.Smooth:
                DrawNodeConnectionSmooth(data);
                break;

            default:
                DrawNodeConnectionLine(data.from, data.to, data.color);
                break;
            }
        }