/// <summary> /// Add a color into the tree /// </summary> /// <param name="pixel">The color</param> /// <param name="colorBits">The number of significant color bits</param> /// <param name="level">The level in the tree</param> /// <param name="octree">The tree to which this node belongs</param> public void addColor(Color32* pixel, int colorBits, int level, Octree octree) { // Update the color information if this is a leaf if (_leaf) { inc(pixel); // Setup the previous node octree.trackPrevious(this); } else { // Go to the next level down in the tree int shift = 7 - level; int index = ((pixel->Red & mask[level]) >> (shift - 2)) | ((pixel->Green & mask[level]) >> (shift - 1)) | ((pixel->Blue & mask[level]) >> (shift)); OctreeNode child = _children[index]; if (child == null) { // Create a new child node & store in the array child = new OctreeNode(level + 1, colorBits, octree); _children[index] = child; } // Add the color to the child node child.addColor(pixel, colorBits, level + 1, octree); } }