Exemple #1
0
        protected override Size MeasureOverride(Size availableSize)
        {
            // Remove windows
            foreach (var dockItem in RemoveQueue)
            {
                Controller.DetachWindow(dockItem);
            }

            // Add windows
            foreach (var dockItem in AddQueue)
            {
                Controller.AttachWindow(dockItem);
            }

            // Update windows
            foreach (var dockItem in UpdateQueue)
            {
                Controller.UpdateWindow(dockItem);
            }

            Controller.ArrangeWindows();

            AddQueue.Clear();
            RemoveQueue.Clear();
            UpdateQueue.Clear();

            return(base.MeasureOverride(availableSize));
        }
Exemple #2
0
        protected override Size ArrangeOverride(Size arrangeBounds)
        {
            if (AddQueue.Any() || RemoveQueue.Any())
            {
                InvalidateMeasure();
            }

            return(base.ArrangeOverride(arrangeBounds));
        }
Exemple #3
0
        protected override void OnItemRemoved(DockItem dockItem)
        {
            UpdateQueue.Remove(dockItem);

            if (AddQueue.Remove(dockItem) == false)
            {
                RemoveQueue.Add(dockItem);
            }

            dockItem.FloatingWindow?.DetachContent();

            InvalidateMeasure();
        }
Exemple #4
0
        protected override void OnItemAdded(DockItem dockItem)
        {
            if (RemoveQueue.Remove(dockItem) == false)
            {
                AddQueue.Add(dockItem);
            }
            else
            {
                UpdateQueue.Add(dockItem);
            }

            dockItem.FloatingWindow?.AttachContent();

            InvalidateMeasure();
        }
Exemple #5
0
        public void Do()
        {
            OctreeAdd    tmp;
            OctreeRemove remove;

            while (true)
            {
                System.Console.WriteLine("working it.");
                while (AddQueue.Count > 0)
                {
                    tmp = AddQueue.Dequeue();
                    if (tmp == null)
                    {
                        continue;
                    }
                    if (tmp.x >= Size.X || tmp.y >= Size.Y || tmp.z >= Size.Z || tmp.x < 0 || tmp.y < 0 || tmp.z < 0)
                    {
                        continue;
                    }
                    if (root == null)
                    {
                        this.root = new OctreeNode((int)Math.Max(Size.X, Math.Max(Size.Y, Size.Z)), 0, 0, 0, ref tmp.color);
                    }

                    root.Add(tmp.x, tmp.y, tmp.z, tmp.size, ref tmp.color);
                }


                while (RemoveQueue.Count > 0)
                {
                    remove = RemoveQueue.Dequeue();
                    if (root == null)
                    {
                        continue;
                    }
                    root.Remove(remove.x, remove.y, remove.z);
                    UpdateNeighbors(remove.x, remove.y, remove.z);
                }

                faceBatch.Update();
            }
        }
Exemple #6
0
            public void Process()
            {
                if (ToBeCleared)
                {
                    Clear();
                    AddQueue.Clear();
                    RemoveQueue.Clear();
                    return;
                }

                while (AddQueue.Count > 0)
                {
                    ProcessAdd(AddQueue.Dequeue());
                }
                while (RemoveQueue.Count > 0)
                {
                    base.Remove(RemoveQueue.Dequeue());
                }

                return;
            }
Exemple #7
0
 public void Add(int x, int y, int z, Vector3 size, Color color)
 {
     AddQueue.Enqueue(new OctreeAdd(x, y, z, size, ref color));
 }
Exemple #8
0
        protected override void OnTemplateContractAttached()
        {
            base.OnTemplateContractAttached();

            AddQueue.AddRange(Items.Except(RemoveQueue));
        }
Exemple #9
0
 public new void Add(T item)
 {
     AddQueue.Enqueue(item);
 }