Esempio n. 1
0
 private void generateBlock()
 {
     if (currentBlock == null)
     {
         currentBlock = BlockFabric.generateRandomBlock(board.boardPositions);
     }
 }
Esempio n. 2
0
    private void Face(BlockType block, int direction, Vector3 position, float scale)
    {
        // TRIANGLES
        int tri = vertices.Count;

        triangles.Add(tri + 0);
        triangles.Add(tri + 2);
        triangles.Add(tri + 1);

        triangles.Add(tri + 2);
        triangles.Add(tri + 3);
        triangles.Add(tri + 1);

        // UVS
        Vector2 uvPos = BlockFabric.GetUV(block);

        float unit = BlockFabric.TEXTURE_SIZE;

        uvs.Add(uvPos + Vector2.zero / unit);
        uvs.Add(uvPos + Vector2.right / unit);
        uvs.Add(uvPos + Vector2.up / unit);
        uvs.Add(uvPos + Vector2.one / unit);

        // VERTICES & NORMALS
        if (direction == FACE_TOP)
        {
            vertices.Add(new Vector3(-1, 1, -1) * scale + position); vertices.Add(new Vector3(1, 1, -1) * scale + position);
            vertices.Add(new Vector3(-1, 1, 1) * scale + position); vertices.Add(new Vector3(1, 1, 1) * scale + position);

            normals.Add(Vector3.up);
            normals.Add(Vector3.up);
            normals.Add(Vector3.up);
            normals.Add(Vector3.up);
        }

        if (direction == FACE_FRONT)
        {
            vertices.Add(new Vector3(-1, -1, -1) * scale + position); vertices.Add(new Vector3(1, -1, -1) * scale + position);
            vertices.Add(new Vector3(-1, 1, -1) * scale + position); vertices.Add(new Vector3(1, 1, -1) * scale + position);

            normals.Add(Vector3.back);
            normals.Add(Vector3.back);
            normals.Add(Vector3.back);
            normals.Add(Vector3.back);
        }

        if (direction == FACE_RIGHT)
        {
            vertices.Add(new Vector3(1, -1, -1) * scale + position); vertices.Add(new Vector3(1, -1, 1) * scale + position);
            vertices.Add(new Vector3(1, 1, -1) * scale + position); vertices.Add(new Vector3(1, 1, 1) * scale + position);

            normals.Add(Vector3.right);
            normals.Add(Vector3.right);
            normals.Add(Vector3.right);
            normals.Add(Vector3.right);
        }

        if (direction == FACE_LEFT)
        {
            vertices.Add(new Vector3(-1, -1, 1) * scale + position); vertices.Add(new Vector3(-1, -1, -1) * scale + position);
            vertices.Add(new Vector3(-1, 1, 1) * scale + position); vertices.Add(new Vector3(-1, 1, -1) * scale + position);

            normals.Add(Vector3.left);
            normals.Add(Vector3.left);
            normals.Add(Vector3.left);
            normals.Add(Vector3.left);
        }

        if (direction == FACE_BACK)
        {
            vertices.Add(new Vector3(1, -1, 1) * scale + position); vertices.Add(new Vector3(-1, -1, 1) * scale + position);
            vertices.Add(new Vector3(1, 1, 1) * scale + position); vertices.Add(new Vector3(-1, 1, 1) * scale + position);

            normals.Add(Vector3.forward);
            normals.Add(Vector3.forward);
            normals.Add(Vector3.forward);
            normals.Add(Vector3.forward);
        }

        if (direction == FACE_BOTTOM)
        {
            vertices.Add(new Vector3(1, -1, -1) * scale + position); vertices.Add(new Vector3(-1, -1, -1) * scale + position);
            vertices.Add(new Vector3(1, -1, 1) * scale + position); vertices.Add(new Vector3(-1, -1, 1) * scale + position);

            normals.Add(Vector3.down);
            normals.Add(Vector3.down);
            normals.Add(Vector3.down);
            normals.Add(Vector3.down);
        }
    }