public ShortestPathModel([NotNull] ISelkieLogger logger, [NotNull] ISelkieInMemoryBus bus, [NotNull] IPathToLineToLineNodeConverter pathToLineToLineNodeConverter, [NotNull] ILineToLineNodeConverterToDisplayLineConverterFactory factory) { m_Logger = logger; m_Bus = bus; m_PathToLineToLineNodeConverter = pathToLineToLineNodeConverter; m_Factory = factory; m_Nodes = new ILineToLineNodeConverter[0]; m_Converter = m_Factory.Create(); bus.SubscribeAsync <ColonyBestTrailMessage>(GetType().FullName, ColonyBestTrailHandler); }
internal List <IDisplayLine> CreateDisplayLinesForNodes(ILineToLineNodeConverter[] nodes) { var lines = new List <IDisplayLine>(); for ( var i = 0 ; i < nodes.Length ; i++ ) { ILineToLineNodeConverter node = nodes [ i ]; IDisplayLine fromLine = m_DisplayLineFactory.Create(node.From, node.FromDirection); lines.Add(fromLine); if ( i != nodes.Length - 1 ) { continue; } IDisplayLine toLine = m_DisplayLineFactory.Create(node.To, node.ToDirection); lines.Add(toLine); } return lines; }
internal List <IDisplayLine> CreateDisplayLinesSingleNode(ILineToLineNodeConverter[] nodes) { var lines = new List <IDisplayLine>(); ILineToLineNodeConverter onlyNode = nodes [ 0 ]; IDisplayLine fromLine = m_DisplayLineFactory.Create(onlyNode.From, onlyNode.FromDirection); IDisplayLine toLine = m_DisplayLineFactory.Create(onlyNode.To, onlyNode.ToDirection); lines.Add(fromLine); lines.Add(toLine); return lines; }