コード例 #1
0
 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();
 }
コード例 #2
0
 public void Dispose()
 {
     if (!disposed)
     {
         list.Remove(node);
         list     = null;
         node     = null;
         disposed = true;
     }
 }
コード例 #3
0
ファイル: ResourceHandle.cs プロジェクト: Artentus/GameUtils
 public void Dispose()
 {
     if (!disposed)
     {
         list.Remove(node);
         list = null;
         node = null;
         disposed = true;
     }
 }
コード例 #4
0
        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);
            }
        }
コード例 #5
0
        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);
                    }
                }
            }
        }
コード例 #6
0
 protected RegistrationTargetBase()
 {
     Updateables = new BufferedLinkedList <UpdateContainer>();
     Renderables = new BufferedList <RenderContainer>();
 }
コード例 #7
0
 internal ResourceHandle(BufferedLinkedList <IResource> list, LinkedListNode <IResource> node)
 {
     this.list = list;
     this.node = node;
 }
コード例 #8
0
ファイル: ResourceHandle.cs プロジェクト: Artentus/GameUtils
 internal ResourceHandle(BufferedLinkedList<IResource> list, LinkedListNode<IResource> node)
 {
     this.list = list;
     this.node = node;
 }
コード例 #9
0
ファイル: LayerState.cs プロジェクト: VB6Hobbyst7/GameUtils
 internal void SetLayerInfo(BufferedLinkedList <UpdateContainer> updateables, int bufferIndex)
 {
     this.updateables = updateables;
     BufferIndex      = bufferIndex;
 }