private static void BuildFace(CubeFace face, CactusBlock cactus, Vector3 localPos, MeshBuilder mesh) { int iFace = (int)face; mesh.AddFaceIndices(cactus.GetAtlasID()); mesh.AddVertices(vertices[iFace], localPos); mesh.AddNormals(normals[iFace]); mesh.AddTexCoords(cactus.GetFaceUV(face)); }
public static MeshBuilder Build(CactusBlock cactus) { MeshBuilder mesh = new MeshBuilder(); for (int i = 0; i < vertices.Length; i++) { mesh.AddFaceIndices(0); mesh.AddVertices(vertices[i], Vector3.zero); mesh.AddNormals(normals[i]); Vector2[] texCoords = cactus.GetFaceUV((CubeFace)i); mesh.AddTexCoords(texCoords); mesh.AddFaceColor(new Color(0, 0, 0, 1)); } return(mesh); }
public static void Build(Vector3i localPos, Vector3i worldPos, Map map, MeshBuilder mesh, bool onlyLight) { CactusBlock cactus = (CactusBlock)map.GetBlock(worldPos).block; for (int i = 0; i < 6; i++) { CubeFace face = CubeBuilder.faces[i]; Vector3i dir = CubeBuilder.directions[i]; Vector3i nearPos = worldPos + dir; if (IsFaceVisible(map, face, nearPos)) { if (!onlyLight) { BuildFace(face, cactus, (Vector3)localPos, mesh); } BuildFaceLight(face, map, worldPos, mesh); } } }