private void UpdateGraph(ISatellite a) { var result = new List <TypedEdge <ISatellite> >(); foreach (ISatellite b in this) { EdgeType edge = IsConnectedTo(a, b); if (edge == EdgeType.None) { continue; } result.Add(new TypedEdge <ISatellite>(a, b, edge)); } // Process RTUtil.Log("Debug: a={0}, Graph[a]={1}", a.Guid, Graph.ContainsKey(a.Guid)); foreach (ISatellite b in Graph[a.Guid]) { var edge = new TypedEdge <ISatellite>(a, b, EdgeType.None); if (!result.Contains(edge)) { OnEdgeUpdate(edge); } } Graph[a.Guid].Clear(); foreach (var edge in result) { Graph[a.Guid].Add(edge.B); OnEdgeUpdate(edge); } }
private void OnEdgeUpdate(TypedEdge <ISatellite> edge) { if (EdgeUpdated != null) { EdgeUpdated.Invoke(edge); RTUtil.Log(edge.ToString()); } }
private void OnEdgeUpdate(TypedEdge <ISatellite> edge) { if (edge.Type == EdgeType.None) { mEdges.Remove(edge); } else { mEdges.Add(edge); } }
private void AssignVectorLine(int i, Vector3[] newPoints, TypedEdge <ISatellite> edge) { if (mLines.Count <= i) { mLines.Add(new VectorLine("Path", newPoints, CheckColor(edge), MapView.fetch.orbitLinesMaterial, 5.0f, LineType.Discrete)); mLines[mLines.Count - 1].layer = 31; mLines[mLines.Count - 1].mesh.MarkDynamic(); } else { mLines[i].Resize(newPoints); Vector.SetColor(mLines[i], CheckColor(edge)); } }
private Color CheckColor(TypedEdge <ISatellite> edge) { if (mConnectionEdges.Contains(edge)) { return(XKCDColors.ElectricLime); } if (edge.Type == EdgeType.Omni) { return(XKCDColors.BrownGrey); } if (edge.Type == EdgeType.Dish) { return(XKCDColors.Amber); } return(XKCDColors.Grey); }
private bool CheckVisibility(TypedEdge <ISatellite> edge) { if (mConnectionEdges.Contains(edge) && (ShowPath || ShowAll)) { return(true); } if (edge.Type == EdgeType.Omni && !ShowOmni) { return(false); } if (edge.Type == EdgeType.Dish && !ShowDish) { return(false); } if (!edge.A.Visible || !edge.B.Visible) { return(false); } return(true); }
public bool Equals(TypedEdge <T> other) { return((A.Equals(other.A) || A.Equals(other.B)) && (B.Equals(other.A) || B.Equals(other.B))); }