Example #1
0
    private void RenderPillar(GameObject prefab, LowPolyTerrainTile tile, float height, bool rotateDownwards, float heightScale = 1.0f)
    {
        var newObj = Instantiate(prefab);

        newObj.transform.parent        = transform;
        newObj.transform.localPosition = MatchHighest(tile.Center, height);
        if (rotateDownwards)
        {
            newObj.transform.Rotate(180, 0, 0);
        }
        newObj.transform.localScale = new Vector3(1.0f, heightScale, 1.0f);
    }
Example #2
0
    private void RenderFloorTile(LowPolyTerrainTile tile, float height, bool swapOrder)
    {
        vertices.Add(MatchHighest(tile.Corner1, height));

        var corner2 = MatchHighest(tile.Corner2, height);
        var corner3 = MatchHighest(tile.Corner3, height);
        vertices.Add(swapOrder ? corner3 : corner2);
        vertices.Add(swapOrder ? corner2 : corner3);

        triangles.Add(triangles.Count);
        triangles.Add(triangles.Count);
        triangles.Add(triangles.Count);
    }
Example #3
0
    private void RenderFloorTile(LowPolyTerrainTile tile, float height, bool swapOrder)
    {
        vertices.Add(MatchHighest(tile.Corner1, height));

        var corner2 = MatchHighest(tile.Corner2, height);
        var corner3 = MatchHighest(tile.Corner3, height);

        vertices.Add(swapOrder ? corner3 : corner2);
        vertices.Add(swapOrder ? corner2 : corner3);

        triangles.Add(triangles.Count);
        triangles.Add(triangles.Count);
        triangles.Add(triangles.Count);
    }
Example #4
0
    private void AddTree(LowPolyTerrainTile tile)
    {
        if (TreePrefab == null)
        {
            return;
        }

        var center = (tile.Corner1 + tile.Corner2 + tile.Corner3) / 3.0f;

        var newTree = Instantiate(TreePrefab, center, Quaternion.identity) as GameObject;
        newTree.transform.localScale = Vector3.one * tile.TreeScale;
        newTree.transform.localEulerAngles = new Vector3(0, tile.TreeRotation, 0);
        newTree.transform.parent = transform;
    }
Example #5
0
    private void AddTree(LowPolyTerrainTile tile)
    {
        if (TreePrefab == null)
        {
            return;
        }

        var center = (tile.Corner1 + tile.Corner2 + tile.Corner3) / 3.0f;

        var newTree = Instantiate(TreePrefab, center, Quaternion.identity) as GameObject;

        newTree.transform.localScale       = Vector3.one * tile.TreeScale;
        newTree.transform.localEulerAngles = new Vector3(0, tile.TreeRotation, 0);
        newTree.transform.parent           = transform;
    }
Example #6
0
    private void RenderUpwardWall(LowPolyTerrainTile tile, float offset, float upper, float lower, int edge, bool swapOrder)
    {
        var edgePair = tile.GetEdgeCorners(edge, offset);

        vertices.Add(MatchHighest(swapOrder ? edgePair.V2 : edgePair.V1, upper));
        vertices.Add(MatchHighest(swapOrder ? edgePair.V2 : edgePair.V1, lower));
        vertices.Add(MatchHighest(swapOrder ? edgePair.V1 : edgePair.V2, upper));

        vertices.Add(MatchHighest(swapOrder ? edgePair.V1 : edgePair.V2, upper));
        vertices.Add(MatchHighest(swapOrder ? edgePair.V2 : edgePair.V1, lower));
        vertices.Add(MatchHighest(swapOrder ? edgePair.V1 : edgePair.V2, lower));

        for (var i = 0; i < 6; i++)
        {
            triangles.Add(triangles.Count);
        }
    }
Example #7
0
    private void RenderDownwall(LowPolyTerrainTile tile, float upper, float lower, int edge)
    {
        var edgePair = tile.GetEdgeCorners(edge);

        vertices.Add(MatchHighest(edgePair.V1, upper));
        vertices.Add(MatchHighest(edgePair.V1, lower));
        vertices.Add(MatchHighest(edgePair.V2, upper));

        vertices.Add(MatchHighest(edgePair.V2, upper));
        vertices.Add(MatchHighest(edgePair.V1, lower));
        vertices.Add(MatchHighest(edgePair.V2, lower));

        for (var i = 0; i < 6; i++)
        {
            triangles.Add(triangles.Count);
        }
    }
Example #8
0
    public LowPolyTerrainData(int width, int height)
    {
        Width = width;
        Height = height;

        var total = width * height;
        Data = new LowPolyTerrainTile[total];

        for (var y = 0; y < height; y++)
        {
            for (var x = 0; x < width; x++)
            {
                Data[x + y * Width] = new LowPolyTerrainTile(x, y);
            }
        }

        TileTypes.Add(Data[0].Type);
    }
Example #9
0
    public LowPolyTerrainData(int width, int height)
    {
        Width  = width;
        Height = height;

        var total = width * height;

        Data = new LowPolyTerrainTile[total];

        for (var y = 0; y < height; y++)
        {
            for (var x = 0; x < width; x++)
            {
                Data[x + y * Width] = new LowPolyTerrainTile(x, y);
            }
        }

        TileTypes.Add(Data[0].Type);
    }
Example #10
0
    private void RenderUpwardWall(LowPolyTerrainTile tile, float offset, float upper, float lower, int edge, bool swapOrder)
    {
        var edgePair = tile.GetEdgeCorners(edge, offset);

        vertices.Add(MatchHighest(swapOrder ? edgePair.V2 : edgePair.V1, upper));
        vertices.Add(MatchHighest(swapOrder ? edgePair.V2 : edgePair.V1, lower));
        vertices.Add(MatchHighest(swapOrder ? edgePair.V1 : edgePair.V2, upper));
        
        vertices.Add(MatchHighest(swapOrder ? edgePair.V1 : edgePair.V2, upper));
        vertices.Add(MatchHighest(swapOrder ? edgePair.V2 : edgePair.V1, lower));
        vertices.Add(MatchHighest(swapOrder ? edgePair.V1 : edgePair.V2, lower));

        for (var i = 0; i < 6; i++)
        {
            triangles.Add(triangles.Count);
        }
    }
Example #11
0
    private void RenderDownwall(LowPolyTerrainTile tile, float upper, float lower, int edge)
    {
        var edgePair = tile.GetEdgeCorners(edge);

        vertices.Add(MatchHighest(edgePair.V1, upper));
        vertices.Add(MatchHighest(edgePair.V1, lower));
        vertices.Add(MatchHighest(edgePair.V2, upper));
        
        vertices.Add(MatchHighest(edgePair.V2, upper));
        vertices.Add(MatchHighest(edgePair.V1, lower));
        vertices.Add(MatchHighest(edgePair.V2, lower));

        for (var i = 0; i < 6; i++)
        {
            triangles.Add(triangles.Count);
        }
    }
Example #12
0
 private void RenderPillar(GameObject prefab, LowPolyTerrainTile tile, float height, bool rotateDownwards, float heightScale = 1.0f)
 {
     var newObj = Instantiate(prefab);
     newObj.transform.parent = transform;
     newObj.transform.localPosition = MatchHighest(tile.Center, height);
     if (rotateDownwards)
     {
         newObj.transform.Rotate(180, 0, 0);
     }
     newObj.transform.localScale = new Vector3(1.0f, heightScale, 1.0f);
 }