Exemple #1
0
    void Start()
    {
        Planete              = FindObjectOfType <Planete>();
        ResteSurTerre        = GetComponent <ResteSurTerre>();
        GenerateTerrainTypes = FindObjectOfType <GenerateTerrainTypes>();

        CouleurDesert = GenerateTerrainTypes.TerrainVariationColors[0].Color;
        CouleurHerbe  = GenerateTerrainTypes.TerrainVariationColors[1].Color;
    }
Exemple #2
0
    void SpreadFlaque(int[] triangles, int t0, Vector3[] vertices, Color[] colors)
    {
        GenerateTerrainTypes = FindObjectOfType <GenerateTerrainTypes>();

        // Watch out for threading
        if (GenerateTerrainTypes.VertexToSimilarVertices == null || GenerateTerrainTypes.VertexToTriangleIndex == null)
        {
            return;
        }

        var colored    = new HashSet <int>();
        var newColored = new HashSet <int>();

        SetFlaque(triangles, t0, colors, colored);

        var spread = SpreadCount - 1;

        while (spread > 0)
        {
            bool worked = false;
            foreach (var t in colored)
            {
                foreach (var t2 in GenerateTerrainTypes.VertexToSimilarVertices[t])
                {
                    if (IsDesert(colors[t2]))
                    {
                        newColored.Add(t2);
                    }
                    else
                    {
                        SetFlaque(triangles, GenerateTerrainTypes.VertexToTriangleIndex[t2] / 3 * 3, colors, newColored);
                        worked = true;
                        if (--spread <= 0)
                        {
                            break;
                        }
                    }
                }
            }
            if (!worked)
            {
                break;
            }
            foreach (var t in newColored)
            {
                colored.Add(t);
            }
        }
    }