Ejemplo n.º 1
0
    public void InstantiateTerrainLayer()
    {
        if (terrainLayerPrefab == null)
        {
            return;
        }
        if (terrainLayerPrefab.GetComponent <TC_TerrainLayer>() == null)
        {
            return;
        }

        TC_Area2D area2D = TC_Area2D.current;

        if (area2D == null)
        {
            return;
        }

        // Destroy the Terrain Layer that is currently assigned
        if (area2D.terrainLayer != null)
        {
            Destroy(area2D.terrainLayer.gameObject);
        }

        // Instantiate the Terrain Layer Prefab
        GameObject terrainLayerGO = Instantiate(terrainLayerPrefab);

        area2D.terrainLayer = terrainLayerGO.GetComponent <TC_TerrainLayer>();

        // Assign all nodes in Terrain Layer
        area2D.terrainLayer.GetItems(false);
    }
    static public Terrain GetTerrain(Vector3 worldPos)
    {
        TC_Area2D area2D = TC_Area2D.current;

        for (int i = 0; i < area2D.terrainAreas[0].terrains.Count; i++)
        {
            TCUnityTerrain t = area2D.terrainAreas[0].terrains[i];

            if (t.terrain == null)
            {
                continue;
            }
            if (t.terrain.terrainData == null)
            {
                continue;
            }

            Rect rect = new Rect(t.terrain.transform.position.x, t.terrain.transform.position.z, t.terrain.terrainData.size.x, t.terrain.terrainData.size.z);

            if (rect.Contains(worldPos))
            {
                return(t.terrain);
            }
        }

        return(null);
    }
    void CreateTerrains()
    {
        TC_Area2D area2D = TC_Area2D.current;

        if (area2D == null)
        {
            return;
        }

        area2D.terrainAreas[0].CreateTerrains();
    }