Exemplo n.º 1
0
        void OnTerrianDataReceived(TerrianData terrianData)
        {
            this.terrianData    = terrianData;
            terrianDataReceived = true;

            UpdateTerrainSpawn();
        }
Exemplo n.º 2
0
    public void DrawTerrianInEditor()
    {
        TerrianData    terrianData = GenerateTerrianData(Vector2.zero);
        TerrianDisplay display     = FindObjectOfType <TerrianDisplay> ();

        display.DrawMesh(MeshGenerator.GenerateTerrainMesh(terrianData.noise, terrianAsset.maxHeight, terrianAsset.waterLevel, detailLevel));
    }
Exemplo n.º 3
0
    void MeshDataThread(TerrianData terrianData, int spawnTerrianDetailLevel, Action <MeshData> callback)
    {
        MeshData meshData = MeshGenerator.GenerateTerrainMesh(terrianData.noise, terrianAsset.maxHeight, terrianAsset.waterLevel, spawnTerrianDetailLevel);

        lock (meshDataThreadInfoQueue)
        {
            meshDataThreadInfoQueue.Enqueue(new DataThreadInfo <MeshData>(callback, meshData));
        }
    }
Exemplo n.º 4
0
    public void RequestMeshData(TerrianData terrianData, int spawnTerrianDetailLevel, Action <MeshData> callback)
    {
        ThreadStart threadStart = delegate
        {
            MeshDataThread(terrianData, spawnTerrianDetailLevel, callback);
        };

        new Thread(threadStart).Start();
    }
Exemplo n.º 5
0
    void TerrianDataThread(Vector2 center, Action <TerrianData> callback)
    {
        TerrianData terrianData = GenerateTerrianData(center);

        lock (terrianDataThreadInfoQueue)
        {
            terrianDataThreadInfoQueue.Enqueue(new DataThreadInfo <TerrianData>(callback, terrianData));
        }
    }
Exemplo n.º 6
0
        void GenerateModels(TerrianData terrianData, Mesh mesh)
        {
            if (mesh != null)
            {
                Vector3[]     vertices         = mesh.vertices;
                Vector3[]     normals          = mesh.normals;
                System.Random rand             = new System.Random();
                System.Random boatGeneration   = new System.Random(10);
                int           index            = 0;
                float         maxSnowManHeight = float.MinValue;
                Quaternion    snowManRotation  = Quaternion.identity;
                Vector3       snowManPos       = new Vector3();

                foreach (Vector3 vertex in vertices)
                {
                    if (vertex.y > 70 && vertex.y < 75)
                    {
                        var tree = Instantiate(models.trees[rand.Next(0, 3)], new Vector3(vertex.x + terrianPosition.x, vertex.y, vertex.z + terrianPosition.y), Quaternion.identity);
                        tree.transform.localScale = new Vector3(0.8f, 0.8f, 0.8f);
                        tree.transform.rotation   = Quaternion.FromToRotation(Vector3.up, normals[index]);
                        tree.transform.parent     = meshObject.transform;
                    }

                    if (vertex.y >= 49 && vertex.y <= 50)
                    {
                        var randomDouble = boatGeneration.NextDouble();
                        if (randomDouble > 0.2 && randomDouble < 0.201)
                        {
                            var boat = Instantiate(models.boats[rand.Next(0, 5)], new Vector3(vertex.x + terrianPosition.x, vertex.y, vertex.z + terrianPosition.y), Quaternion.identity);
                            boat.transform.localScale = new Vector3(0.005f, 0.005f, 0.005f);
                            boat.transform.rotation   = Quaternion.FromToRotation(Vector3.up, normals[index]);
                            boat.transform.parent     = meshObject.transform;
                        }
                    }

                    if (vertex.y > maxSnowManHeight)
                    {
                        snowManPos       = new Vector3(vertex.x + terrianPosition.x, vertex.y, vertex.z + terrianPosition.y);
                        maxSnowManHeight = vertex.y;
                        snowManRotation  = Quaternion.FromToRotation(Vector3.up, normals[index]);
                    }
                    index++;
                }

                var snowman = Instantiate(models.snowman, snowManPos, Quaternion.identity);
                snowman.transform.localScale = Vector3.one * 5;
                snowman.transform.rotation   = snowManRotation;
                snowman.transform.parent     = meshObject.transform;
            }
        }
Exemplo n.º 7
0
 public void RequestMesh(TerrianData terrianData)
 {
     hasRequestedMesh = true;
     terrianGenerator.RequestMeshData(terrianData, level, OnMeshDataReceived);
 }