internal PathfindingContext(IGraphData <T> graphData, Algorithms algorithm) { this.graphData = graphData; this.algorithm = algorithm; this.openList = new UniquePriorityQueue <NodeWrapper <T> >(Comparer <NodeWrapper <T> > .Create((o1, o2) => o2.CompareTo(o1))); this.nodeMapping = new Dictionary <T, NodeWrapper <T> >(); }
public static T TryDequeue <T>(this UniquePriorityQueue <T> upq) { if (upq.Count > 0) { return(upq.Dequeue()); } return(default);
public static bool Update <T>(this UniquePriorityQueue <T> upq, T item) { if (upq.Remove(item)) { upq.Enqueue(item); return(true); } return(false); }
public static void Test() { UniquePriorityQueue <int> queue = new UniquePriorityQueue <int>(); Assert.IsTrue(queue.Enqueue(2)); Assert.IsTrue(queue.Enqueue(3)); Assert.IsTrue(queue.Enqueue(0)); Assert.IsTrue(queue.Enqueue(1)); Assert.AreEqual(queue.Count, 4); Assert.AreEqual(queue.Dequeue(), 3); Assert.AreEqual(queue.Dequeue(), 2); Assert.AreEqual(queue.Dequeue(), 1); Assert.AreEqual(queue.Dequeue(), 0); Assert.AreEqual(queue.Count, 0); }
/// <summary> /// Resets the manager with a new precision time to discard messages /// </summary> /// <remarks> /// This method erases all messages on the manager! Should be called carefully /// </remarks> /// <param name="precision">The precision time to decide if two messages are equal or not</param> public void ResetManager(double precision) { messageQueue = new UniquePriorityQueue <Message>(new MessageComparer(precision)); }
/// <summary> /// Default constructor /// </summary> private MessageManagerRouter() { messageQueue = new UniquePriorityQueue <Message>(new MessageComparer(1000)); }
/// <summary> /// Resets the manager with a new precision time to discard messages /// </summary> /// <remarks> /// This method erases all info on the manager! Should be called carefully /// </remarks> /// <param name="precision">The precision time to decide if two messages are equal or not</param> public void ResetManager(double precision) { messageQueue = new UniquePriorityQueue <Message>(new MessageComparer(precision)); registeredEntities = new Dictionary <MessageType, Dictionary <int, MessageHandlerDelegate> >(); }
/// <summary> /// Default constructor /// </summary> private MessageManagerHandler() { messageQueue = new UniquePriorityQueue <Message>(new MessageComparer(1000)); registeredEntities = new Dictionary <MessageType, Dictionary <int, MessageHandlerDelegate> >(); }
/// <summary> /// Resets the manager with a new precision time to discard messages /// </summary> /// <remarks> /// This method erases all messages on the manager! Should be called carefully /// </remarks> /// <param name="precision">The precision time to decide if two messages are equal or not</param> public void ResetManager(double precision) { messageQueue = new UniquePriorityQueue<Message>(new MessageComparer(precision)); }
/// <summary> /// Default constructor /// </summary> private MessageManagerRouter() { messageQueue = new UniquePriorityQueue<Message>(new MessageComparer(1000)); }
/// <summary> /// Resets the manager with a new precision time to discard messages /// </summary> /// <remarks> /// This method erases all info on the manager! Should be called carefully /// </remarks> /// <param name="precision">The precision time to decide if two messages are equal or not</param> public void ResetManager(double precision) { messageQueue = new UniquePriorityQueue<Message>(new MessageComparer(precision)); registeredEntities = new Dictionary<MessageType, Dictionary<int, MessageHandlerDelegate>>(); }
/// <summary> /// Default constructor /// </summary> private MessageManagerHandler() { messageQueue = new UniquePriorityQueue<Message>(new MessageComparer(1000)); registeredEntities = new Dictionary<MessageType, Dictionary<int, MessageHandlerDelegate>>(); }