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 }); }
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); }