예제 #1
0
        /// <summary>
        /// Draws and enables the node editor
        /// </summary>
        /// <param name="e">User event</param>
        public void DoNodeEditor(Event e)
        {
            Rect _zoomrect = new Rect(new Vector2(0, 19), Window.position.size);

            Vector2 pivotscale = _zoomrect.size / 2;

            Graph.ZoomPivot = GUIScaleUtility.BeginScale(ref _zoomrect, pivotscale, Graph.Zoom, true, false);

            // Node drawing

            UnityEngine.Profiling.Profiler.BeginSample("MoonBehavior: Node Drawing");

            if (Graph.Nodes.Count > 0 && (e.type == EventType.Layout || e.type == EventType.Repaint))
            {
                DrawNodes(Graph.Nodes, _zoomrect);
            }

            UnityEngine.Profiling.Profiler.EndSample();

            // Node interaction

            UnityEngine.Profiling.Profiler.BeginSample("MoonBehavior: Node events");

            HandleNodeEvents(e, Graph);

            UnityEngine.Profiling.Profiler.EndSample();

            if (ActiveOutput != null)
            {
                MoonGUI.DrawLine(ActiveOutput.GetPosition(), e.mousePosition, new Color(1, 1, 1, 0.6f));
            }

            GUIScaleUtility.EndScale();

            HandleAddNodes(e);
            HandleContext();
        }
예제 #2
0
 /// <summary>
 /// Custom Line drawing
 /// </summary>
 /// <param name="Start">Start point</param>
 /// <param name="End">End point</param>
 /// <param name="Target">Target point</param>
 public override void DrawLine(Vector2 Start, Vector2 End, NodeInput Target)
 {
     MoonGUI.DrawLine(Start, End, Color.white, new GUIContent(Target.Order.ToString(), "Order"), true);
 }
예제 #3
0
 /// <summary>
 /// Draws a line for an Node input
 /// </summary>
 /// <param name="Start">Start position</param>
 /// <param name="End">End position</param>
 /// <param name="Target">Input target</param>
 public virtual void DrawLine(Vector2 Start, Vector2 End, NodeInput Target)
 {
     MoonGUI.DrawLine(Start, End, Color.white, true);
 }