public static List <float> GetTimings(EventCall eventCall)
        {
            float now = Time.unscaledTime;
            List <EdgeTrigger> acceptedTriggers = triggers.FindAll(t => t.eventCall == eventCall);

            return(GetTimings(acceptedTriggers));
        }
 public static void RegisterTrigger(Edge edge, EventCall eventCall)
 {
     triggers.Add(new EdgeTrigger()
     {
         edge = edge, eventCall = eventCall, triggeredTime = Time.unscaledTime
     });
 }
Пример #3
0
        public static void RegisterEvent(EventCall eventCall)
        {
            CreateNode(eventCall.Sender);
            CreateNode(eventCall.Receiver);

            nodes[eventCall.Sender].Outputs.Add(eventCall);
            nodes[eventCall.Receiver].Inputs.Add(eventCall);
        }
        public static void RegisterEvent(EventCall eventCall)
        {
            var nodeSender   = CreateNode(eventCall.sender);
            var nodeReceiver = CreateNode(eventCall.receiver);

            eventCall.nodeSender   = nodeSender;
            eventCall.nodeReceiver = nodeReceiver;

            nodeSender.Outputs.Add(eventCall);
            nodeReceiver.Inputs.Add(eventCall);
        }
        private static void DrawConnection(EventCall ev, Bezier b)
        {
            const float tangentSize = 50;

            float diff = b.end.x - b.start.x;

            diff = Mathf.Sign(diff) * Mathf.Min(Mathf.Abs(diff), tangentSize);

            var p1 = b.start;
            var p2 = b.end;
            var p3 = p1;
            var p4 = p2;

            if (b.startTangent == Bezier.Tangent.Auto)
            {
                p3 += new Vector2(diff, 0);
            }
            else if (b.startTangent == Bezier.Tangent.Negative)
            {
                p3 -= new Vector2(Math.Abs(diff), 0);
            }
            else if (b.startTangent == Bezier.Tangent.Positive)
            {
                p3 += new Vector2(Math.Abs(diff), 0);
            }
            else if (b.startTangent == Bezier.Tangent.NegativeUnscaled)
            {
                p3 -= new Vector2(tangentSize, 0);
            }
            else if (b.startTangent == Bezier.Tangent.PositiveUnscaled)
            {
                p3 += new Vector2(tangentSize, 0);
            }

            if (b.endTangent == Bezier.Tangent.Auto)
            {
                p4 -= new Vector2(diff, 0);
            }
            else if (b.endTangent == Bezier.Tangent.Negative)
            {
                p4 -= new Vector2(Math.Abs(diff), 0);
            }
            else if (b.endTangent == Bezier.Tangent.Positive)
            {
                p4 += new Vector2(Math.Abs(diff), 0);
            }
            else if (b.endTangent == Bezier.Tangent.NegativeUnscaled)
            {
                p4 -= new Vector2(tangentSize, 0);
            }
            else if (b.endTangent == Bezier.Tangent.PositiveUnscaled)
            {
                p4 += new Vector2(tangentSize, 0);
            }

            Color c         = ev.color;
            Color prevColor = Handles.color;

            Handles.color = c;
            Handles.DrawBezier(p1, p2, p3, p4, c, (Texture2D)UnityEditor.Graphs.Styles.selectedConnectionTexture.image, EdgeGUI.kEdgeWidth);
            foreach (var trigger in EdgeTriggersTracker.GetTimings(ev))
            {
                Vector3 pos = EdgeGUI.CalculateBezierPoint(trigger, p1, p3, p4, p2);
                Handles.DrawSolidArc(pos, Vector3.back, pos + Vector3.up, 360, EdgeGUI.kEdgeWidth);
            }
            Handles.color = prevColor;
        }
        private Rect DrawEventBox(StringBuilder sb, string type, List <EventBox> boxesToDraw, EventCall ev, ref Vector2 boxPos, bool outsideScreen)
        {
            Rect rect = new Rect(boxPos, new Vector2(0, separation));

            if (!outsideScreen && showLabels.Get())
            {
                sb.Append(type);
                if (showTimesExecuted.Get())
                {
                    sb.Append("(").Append(ev.timesExecuted).Append(") ");
                }
                sb.Append(eventFullName.Get() ? ev.eventFullName : ev.eventShortName).Append("  ▶  ");
                if (showComponentName.Get())
                {
                    sb.Append(ev.ReceiverComponentNameSimple).Append(".");
                }
                sb.Append(ev.method);

                GUIContent content = new GUIContent(sb.ToString());

                rect.size = GUI.skin.box.CalcSize(content);

                boxesToDraw.Add(new EventBox()
                {
                    content = content,
                    ev      = ev,
                    rect    = rect
                });
            }

            boxPos.y += rect.height;
            return(rect);
        }