コード例 #1
0
ファイル: CactusBuilder.cs プロジェクト: Lewnatic/VoxelIsland
    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));
    }
コード例 #2
0
ファイル: CactusBuilder.cs プロジェクト: Lewnatic/VoxelIsland
    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);
    }
コード例 #3
0
ファイル: CactusBuilder.cs プロジェクト: Lewnatic/VoxelIsland
    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);
            }
        }
    }