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)); }
protected override Size ArrangeOverride(Size arrangeBounds) { if (AddQueue.Any() || RemoveQueue.Any()) { InvalidateMeasure(); } return(base.ArrangeOverride(arrangeBounds)); }
protected override void OnItemRemoved(DockItem dockItem) { UpdateQueue.Remove(dockItem); if (AddQueue.Remove(dockItem) == false) { RemoveQueue.Add(dockItem); } dockItem.FloatingWindow?.DetachContent(); InvalidateMeasure(); }
protected override void OnItemAdded(DockItem dockItem) { if (RemoveQueue.Remove(dockItem) == false) { AddQueue.Add(dockItem); } else { UpdateQueue.Add(dockItem); } dockItem.FloatingWindow?.AttachContent(); InvalidateMeasure(); }
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(); } }
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; }
public void Add(int x, int y, int z, Vector3 size, Color color) { AddQueue.Enqueue(new OctreeAdd(x, y, z, size, ref color)); }
protected override void OnTemplateContractAttached() { base.OnTemplateContractAttached(); AddQueue.AddRange(Items.Except(RemoveQueue)); }
public new void Add(T item) { AddQueue.Enqueue(item); }