private void OnNodeEvent(System.Object sender, EventArgs e) { GraphEventArgs graphEvent = (GraphEventArgs)e; //Debug.Log(this.id + ": " + graphEvent.ToString()); //Debug.Log(sender.ToString() + " --> " + this.id + ": received --> " + graphEvent.ToString()); if (graphEvent.LastSender == (Edge)this) { //Debug.Log("Edge PingPong-BREAK! " + this.id); return; } GraphEventArgs newGraphEventArgs; // Filter PingPong if (graphEvent.TimeToLive > 0) { switch (graphEvent.GraphEvent) { case GraphEventType.NodeChanged: // Recalculate Values RefreshEdge(); if ((Node)sender == this.from) { //Debug.Log(this.id + " Edge: NodeChanged (sender" + ((Node)sender).ToString() + ") --> fire EdgeFromChanged"); newGraphEventArgs = graphEvent.nextLevelArgs(sender, GraphEventType.EdgeFromChanged, this.id + ".FromChanged"); } else { //Debug.Log(this.id + " Edge: NodeChanged (sender" + ((Node)sender).ToString() + ") --> fire EdgeToChanged"); newGraphEventArgs = graphEvent.nextLevelArgs(sender, GraphEventType.EdgeToChanged, this.id + ".ToChanged"); } _change(this, newGraphEventArgs); break; case GraphEventType.NodeDeleted: //Debug.Log(this.id + " Edge: NodeDeleted (sender" + ((Node)sender).ToString() + ") --> Delete() -- > fire EdgeDeleted"); Delete(); _change(this, graphEvent.nextLevelArgs(sender, GraphEventType.EdgeDeleted, this.id + ".EdgeDeleted")); break; case GraphEventType.EdgeChanged: //Debug.Log(this.id + " Edge: EdgeChanged (sender" + ((Node)sender).ToString() + ") --> Do Nothing"); //_change(this, graphEvent.nextLevelArgs(sender, GraphEventType.EdgeDeleted, this.id + ".EdgeDeleted")); break; default: //Debug.Log("Default???"); break; } } }
private void OnEdgeEvent(System.Object sender, EventArgs e) { GraphEventArgs graphEventArgs = (GraphEventArgs)e; // Catch PingPong if (graphEventArgs.LastSender == this) { return; } if (graphEventArgs.TimeToLive > 0) { GraphEventArgs args; // Just to make sure RefreshEdges(); switch (graphEventArgs.GraphEvent) { case GraphEventType.NodeChanged: //Debug.Log(this.id + "NodeChanged\n" + graphEventArgs.ToString()); args = graphEventArgs.nextLevelArgs(sender, GraphEventType.NodeChanged, this.id + ".NodeChanged"); _changeGraphLayer(this, args); break; case GraphEventType.NodeDeleted: //Debug.Log(this.id + ": NodeDeleted\n" + graphEventArgs.ToString()); break; case GraphEventType.EdgeFromChanged: //Debug.Log(this.id + ": EdgeFromChanged\n" + graphEventArgs.ToString()); args = graphEventArgs.nextLevelArgs(sender, GraphEventType.NodeChanged, this.id + ".NodeChanged"); _changeGraphLayer(this, args); break; case GraphEventType.EdgeToChanged: //Debug.Log(this.id + ": EdgeToChanged\n" + graphEventArgs.ToString()); args = graphEventArgs.nextLevelArgs(sender, GraphEventType.NodeChanged, this.id + ".NodeChanged"); _changeGraphLayer(this, args); break; case GraphEventType.EdgeDeleted: //Debug.Log(this.id + ": EdgeDeletedChanged\n" + graphEventArgs.ToString()); args = graphEventArgs.nextLevelArgs(sender, GraphEventType.EdgeDeleted, this.id + ".EdgeDeleted"); _changeGraphLayer(this, args); break; default: break; } } }