public void VisualizeVoxels <T>( Matrix4x4 vesselLocalToWorldMatrix, PartTint tint, DebugVoxelMesh voxelMesh, T builder ) where T : IDebugVoxelMeshBuilder <DebugVoxel> { for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { for (int k = 0; k < 8; k++) { PartSizePair pair = voxelPoints[i + 8 * j + 64 * k]; if (pair.part is null) { continue; } double elementSize = pair.GetSize(); if (elementSize > 1) { elementSize = 1; } elementSize *= _size * 0.5f; var vx = new DebugVoxel(vesselLocalToWorldMatrix.MultiplyPoint3x4(lowerCorner + new Vector3d(i, j, k) * _size), (float)elementSize, tint.GetOrAdd(pair.part)); voxelMesh.Add(builder, vx); } } } }
public static DebugVoxelMesh Create(Transform parent = null) { var go = new GameObject("DebugVoxelMesh", typeof(DebugVoxelMesh)); DebugVoxelMesh mesh = go.GetComponent <DebugVoxelMesh>(); if (parent != null) { go.transform.SetParent(parent); } go.SetActive(true); return(mesh); }