public bool IsConnectedTo(MessageLine other) { return(other.HandlerActor == HandlerActor || other.HandlerActor == CallerActor || other.CallerActor == HandlerActor || other.CallerActor == CallerActor); }
private void OnMessageHandleHandler(Type callerType, Type handlerType, Type messageType, string messageName, string handlerMethodName) { MessageActorWidget callerActor = GetOrCreateActor(callerType); MessageActorWidget handlerActor = GetOrCreateActor(handlerType); callerActor.LogSentMessage(handlerActor, messageType, messageName); handlerActor.LogHandledMessage(callerActor, messageType, messageName); MessageLine line = messageLines.Find(x => (x.CallerActor == callerActor && x.HandlerActor == handlerActor)); bool newLineCreated = false; bool reversed = false; if (line == null) { // Check for reversed to change it to TwoWay line line = messageLines.Find(x => (x.HandlerActor == callerActor && x.CallerActor == handlerActor)); if (line != null) { reversed = true; } else { line = new MessageLine(callerActor, handlerActor); messageLines.Add(line); newLineCreated = true; } } line.SendMessage(messageType, messageName == "" ? messageType.ToString() : '"' + messageName + '"', reversed); if (newLineCreated) { chainesAreDirty = true; } }
private void ReconstructMessageChains() { messageChains.Clear(); List <MessageLine> looseLines = new List <MessageLine>(messageLines); while (looseLines.Count > 0) { MessageChain chain = new MessageChain(); chain.Lines.Add(looseLines[0]); looseLines.RemoveAt(0); bool addedNewLine = true; while (addedNewLine) { addedNewLine = false; if (looseLines.Count > 0) { for (int i = looseLines.Count - 1; i >= 0; i--) { MessageLine looseLine = looseLines[i]; foreach (MessageLine lineInChain in chain.Lines) { if (lineInChain.IsConnectedTo(looseLine)) { chain.Lines.Add(looseLine); looseLines.RemoveAt(i); addedNewLine = true; break; } } } } } chain.RepositionInternally(); messageChains.Add(chain); } float totalHeight = 0.0f; float maxWidth = 0.0f; foreach (MessageChain chain in messageChains) { chain.Position = new Vector2(0.0f, totalHeight); totalHeight += chain.Height; maxWidth = Mathf.Max(maxWidth, chain.Width); totalHeight += chainMarginVert; } boundingBox = new Rect(0, 0, maxWidth, totalHeight); }
public void Update() { foreach (MessageLine messageLine in messageLines) { messageLine.Update(); } foreach (MessageActorWidget actor in messageActors) { actor.Update(); } MessageLine.UpdateHeavy(); }
public static void UpdateHeavy() { for (int i = instances.Count - 1; i >= 0; i--) { if (instances[i] == null) { instances.RemoveAt(i); } } if (instances.Count == 0) { return; } if (focusedInstanceIndex > instances.Count - 1) { focusedInstanceIndex = 0; } MessageLine line = instances[focusedInstanceIndex]; line.UpdateWayPoints(); focusedInstanceIndex++; }