void BuildWireFrame() { int chunkIndex = 0; List <Vector3> vertexChunk = CheckList <Vector3> (ref verticesWire [chunkIndex]); List <int> indicesChunk = CheckList <int> (ref indicesWire [chunkIndex]); int pos; int verticesCount = -1; verticesIdx.Clear(); int cellCount = cells.Length; bool useGridMask = _hexaGridUseMask && gridColors != null; for (int k = 0; k < cellCount; k++) { // Mask Cell cell = cells [k]; if (useGridMask) { // Convert cell center to texture coordinates int colorIndex = Conversion.ConvertToTextureColorIndex(cell.sphereCenter, gridMaskWidthMinusOne, gridMaskHeightMinusOne); cell.visible = (gridColors [colorIndex].b <= _hexaGridMaskThreshold); if (!cell.visible) { continue; } } else { cell.visible = true; } if (verticesCount > MAX_VERTEX_COUNT_PER_CHUNK) { chunkIndex++; vertexChunk = CheckList <Vector3> (ref verticesWire [chunkIndex]); indicesChunk = CheckList <int> (ref indicesWire [chunkIndex]); verticesIdx.Clear(); verticesCount = -1; } int pos0 = 0; Point[] cellVertices = cell.vertexPoints; int cellVerticesCount = cellVertices.Length; for (int b = 0; b < cellVerticesCount; b++) { Point point = cellVertices [b]; if (!verticesIdx.TryGetValue(point, out pos)) { vertexChunk.Add(point.projectedVector3); verticesCount++; pos = verticesCount; verticesIdx [point] = pos; } indicesChunk.Add(pos); if (b == 0) { pos0 = pos; } else { indicesChunk.Add(pos); } } indicesChunk.Add(pos0); } gridWireframeRoot = CreateGOandParent(gameObject.transform, HEXASPHERE_WIREFRAME).transform; for (int k = 0; k <= chunkIndex; k++) { GameObject go = CreateGOandParent(gridWireframeRoot, "Wire"); MeshFilter mf = go.AddComponent <MeshFilter> (); wiredMeshes [k] = new Mesh(); wiredMeshes [k].hideFlags = HideFlags.DontSave; wiredMeshes [k].vertices = verticesWire [k].ToArray(); wiredMeshes [k].SetIndices(indicesWire [k].ToArray(), MeshTopology.Lines, 0); mf.sharedMesh = wiredMeshes [k]; MeshRenderer mr = go.AddComponent <MeshRenderer> (); mr.reflectionProbeUsage = UnityEngine.Rendering.ReflectionProbeUsage.Off; mr.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; mr.receiveShadows = false; mr.sharedMaterial = gridMat; } }