Example #1
0
 //Returns a random terrain obstacles based on biome;
 GameObject GetTerrainObstacles(TileData.Triangle.Biome biome)
 {
     if (biome == TileData.Triangle.Biome.Desert)
     {
         return(desertObject[UnityEngine.Random.Range(0, desertObject.Count)]);
     }
     else if (biome == TileData.Triangle.Biome.Forest)
     {
         return(forestObject[UnityEngine.Random.Range(0, forestObject.Count)]);
     }
     else if (biome == TileData.Triangle.Biome.Plains)
     {
         return(plainsObject[UnityEngine.Random.Range(0, plainsObject.Count)]);
     }
     else
     {
         return(waterObject[UnityEngine.Random.Range(0, waterObject.Count)]);
     }
 }
Example #2
0
 //Gets material based on biome
 Material GetMaterial(TileData.Triangle.Biome biome)
 {
     if (biome == TileData.Triangle.Biome.Desert)
     {
         return(desertMaterial);
     }
     else if (biome == TileData.Triangle.Biome.Forest)
     {
         return(forestMaterial);
     }
     else if (biome == TileData.Triangle.Biome.Plains)
     {
         return(plainsMaterial);
     }
     else
     {
         return(waterMaterial);
     }
 }
Example #3
0
    private List <Node> FindNeighbouringNodes(Node node)
    {
        List <Node> neighbouringNodes = new List <Node>();

        if (node.Orientation == Node.NodeOrientation.Vertical)
        {
            for (int x = 0; x < 2; x++)
            {
                for (int z = 0; z < 2; z++)
                {
                    if (node.z - z < 0 || node.z - z > horizontalNodes.GetLength(1) - 1)
                    {
                        continue;
                    }

                    var horizontalNode = horizontalNodes[node.x + x, node.z - z];

                    TileData.Triangle.Biome biome = TileData.Triangle.Biome.Null;

                    if (z == 0)
                    {
                        biome = horizontalNode.NeighbouringTiles[0].GetBiome(180);
                    }
                    else if (z == 1)
                    {
                        biome = horizontalNode.NeighbouringTiles[1].GetBiome(0);
                    }

                    if (biome != node.biome)
                    {
                        continue;
                    }

                    if (horizontalNode.biome != TileData.Triangle.Biome.Null)
                    {
                        //success!
                        neighbouringNodes.Add(horizontalNode);
                    }
                    else
                    {
                        //abort
                        openNodes.Remove(horizontalNode);
                        openNodes.Remove(node);
                        closedNodes.Add(horizontalNode);
                        closedNodes.Add(node);
                        return(null);
                    }
                }
            }
        }
        else
        {
            for (int x = 0; x < 2; x++)
            {
                for (int z = 0; z < 2; z++)
                {
                    if (node.x - x < 0 || node.x - x > verticalNodes.GetLength(0) - 1)
                    {
                        continue;
                    }

                    var verticalNode = verticalNodes[node.x - x, node.z + z];

                    TileData.Triangle.Biome biome = TileData.Triangle.Biome.Null;

                    if (x == 0)
                    {
                        biome = verticalNode.NeighbouringTiles[0].GetBiome(90);
                    }
                    else if (x == 1)
                    {
                        biome = verticalNode.NeighbouringTiles[1].GetBiome(270);
                    }

                    if (biome != node.biome)
                    {
                        continue;
                    }

                    if (verticalNode.biome != TileData.Triangle.Biome.Null)
                    {
                        //success!
                        neighbouringNodes.Add(verticalNode);
                    }
                    else
                    {
                        //abort
                        openNodes.Remove(verticalNode);
                        openNodes.Remove(node);
                        closedNodes.Add(verticalNode);
                        closedNodes.Add(node);
                        return(null);
                    }
                }
            }
        }

        return(neighbouringNodes);
    }