//level - depth level public void AddColor(Color color, int level, OctreeQuantizer parent) { // if this node is a leaf, then increase a color amount, and pixel presence if (level == 8) { red += color.R; green += color.G; blue += color.B; pixelCount++; } else if (level < 8) // otherwise goes one level deeper { // calculates an index for the next sub-branch int index = GetColorIndexAtLevel(color, level); //current level // if that branch doesn't exist, grows it if (nodes[index] == null) { nodes[index] = new OctreeNode(level, parent); } // adds a color to that branch nodes[index].AddColor(color, level + 1, parent); } }
private void prepare() { levels = new List<OctreeNode>[7]; // creates the octree level lists for (Int32 level = 0; level < 7; level++) { levels[level] = new List<OctreeNode>(); } root = new OctreeNode(0, this); }
public void Init() { levels = new List<OctreeNode>[7]; // creates the octree level lists for (Int32 level = 0; level < 7; level++) { levels[level] = new List<OctreeNode>(); } root = new OctreeNode(0, this); }
internal void AddLevelNode(int level, OctreeNode octreeNode) { levels[level].Add(octreeNode); }