public void DebugDrawCompactSpans() { int sCount = voxelArea.compactSpans.Length; Vector3[] debugPointsTop = new Vector3[sCount]; Vector3[] debugPointsBottom = new Vector3[sCount]; Color[] debugColors = new Color[sCount]; int debugPointsCount = 0; int wd = voxelArea.width * voxelArea.depth; var min = forcedBounds.min; for (int z = 0, pz = 0; z < wd; z += voxelArea.width, pz++) { for (int x = 0; x < voxelArea.width; x++) { Vector3 p = new Vector3(x, 0, pz) * cellSize + min; //CompactVoxelCell c = voxelArea.compactCells[x+z]; CompactVoxelCell c = voxelArea.compactCells[x + z]; //if (c.count == 0) { // Debug.DrawRay (p,Vector3.up,Color.red); //} for (int i = (int)c.index, ni = (int)(c.index + c.count); i < ni; i++) { CompactVoxelSpan s = voxelArea.compactSpans[i]; p.y = ((float)(s.y + 0.1F)) * cellHeight + min.y; debugPointsTop[debugPointsCount] = p; p.y = ((float)s.y) * cellHeight + min.y; debugPointsBottom[debugPointsCount] = p; Color col = Color.black; switch (s.reg) { case 0: col = Color.red; break; case 1: col = Color.green; break; case 2: col = Color.yellow; break; case 3: col = Color.magenta; break; } debugColors[debugPointsCount] = col; //Color.Lerp (Color.black, Color.white , (float)dst[i] / (float)voxelArea.maxDistance);//(float)(Mathf.Abs(dst[i]-src[i])) / (float)5);//s.area == 1 ? Color.green : (s.area == 2 ? Color.yellow : Color.red); debugPointsCount++; //Debug.DrawRay (p,Vector3.up*0.5F,Color.green); } } } DebugUtility.DrawCubes(debugPointsTop, debugPointsBottom, debugColors, cellSize); }