static GameEngine() { Components = new LinkedList <IEngineComponent>(); ComponentsLocker = new object(); Resources = new BufferedLinkedList <IResource>(); Resources.ChangesApplied += (sender, e) => Parallel.ForEach(e.AddedItems, resource => { if (resource.UpdateMode == UpdateMode.Synchronous) { resource.ApplyChanges(); } else { Task.Factory.StartNew(() => { resource.IsReady = false; resource.ApplyChanges(); resource.IsReady = true; }, TaskCreationOptions.PreferFairness); } }); MessageListeners = new LinkedList <IMessageListener>(); ListenersLocker = new object(); Loggers = new List <Logger>(); LoggersLocker = new object(); }
public void Dispose() { if (!disposed) { list.Remove(node); list = null; node = null; disposed = true; } }
public void EnumerateListTest(ListType type) { BufferedLinkedList <Int32> list = new BufferedLinkedList <int>(); if (type == ListType.EmptyList) { int sum = 0; foreach (var item in list) { sum += item; } Assert.AreEqual(0, sum); list.AddLast(1); list.AddLast(2); sum = 0; foreach (var item in list) { sum += item; } Assert.AreEqual(3, sum); } else { for (int i = 0; i < 10; ++i) { list.AddLast(i); } int index = 0; foreach (var item in list) { Assert.AreEqual(index, item); index++; } Assert.AreEqual(10, index); list.Clear(); index = -1; foreach (var item in list) { index = item; } Assert.AreEqual(-1, index); } }
public void RingedQueueStressTest() { RingedQueue <BinaryArray> queue = new RingedQueue <BinaryArray>(); BufferedLinkedList <BinaryArray> etalon = new BufferedLinkedList <BinaryArray>(); Random rand = new Random(55); int iterations = 1000000; for (int i = 0; i < iterations; ++i) { int type = rand.Next() % 3; if (Math.Abs(type) == 0 && queue.Count > 0) { Assert.AreEqual(true, queue.Pop().Equals(etalon.First)); etalon.RemoveFirst(); } else { BinaryArray array = new BinaryArray(); array.Append(i); queue.Add(array); etalon.AddLast(array); } if (i % 100000 == 0) { int index = 0; int iterator = etalon.FirstKey; Assert.AreEqual(queue.Count, etalon.Count); foreach (BinaryArray element in queue) { Assert.AreEqual(true, element.Equals(etalon[iterator])); Assert.AreEqual(true, element == queue[index]); index++; iterator = etalon.Next(iterator); } } } }
protected RegistrationTargetBase() { Updateables = new BufferedLinkedList <UpdateContainer>(); Renderables = new BufferedList <RenderContainer>(); }
internal ResourceHandle(BufferedLinkedList <IResource> list, LinkedListNode <IResource> node) { this.list = list; this.node = node; }
internal ResourceHandle(BufferedLinkedList<IResource> list, LinkedListNode<IResource> node) { this.list = list; this.node = node; }
internal void SetLayerInfo(BufferedLinkedList <UpdateContainer> updateables, int bufferIndex) { this.updateables = updateables; BufferIndex = bufferIndex; }