public void Unload() { octree.RemoveAll(); RemoveQueue.Clear(); AddQueue.Clear(); faceBatch.Update(); }
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(); } }