Esempio n. 1
0
 public void RemoveGenerationJob(GenerateChunkJob jobToRemove)
 {
     if (jobToRemove.Equals(activeGenerationJob))
     {
         activeGenerationJob.Abort();
         activeGenerationJob    = null;
         hasActiveGenerationJob = false;
     }
     else if (!generationQueue.Contains(jobToRemove))
     {
         if (jobToRemove.Equals(activeMeshJob))
         {
             activeMeshJob.Abort();
             activeMeshJob    = null;
             hasActiveMeshJob = false;
         }
         else
         {
             meshGenerationQueue.Remove(jobToRemove.ToMeshJob());
         }
     }
     else
     {
         generationQueue.Remove(jobToRemove);
     }
 }
Esempio n. 2
0
    public GenerateMeshFromChunkJob ToMeshJob()
    {
        GenerateMeshFromChunkJob meshJob = new GenerateMeshFromChunkJob();

        meshJob.chunkCoordinates = chunkLocationToGenerate;
        return(meshJob);
    }
Esempio n. 3
0
    void LoadChunk(GenerateMeshFromChunkJob generatedChunk)
    {
        GameObject current = Instantiate(chunkPrefab, new Vector3(0, 0, 0), new Quaternion());

        current.GetComponent <TerrainChunk>().Load(generatedChunk);
        loadedChunkList.Add(current.GetComponent <TerrainChunk>());
    }
Esempio n. 4
0
 private void CheckActiveMeshJob()
 {
     if (activeMeshJob != null)
     {
         if (activeMeshJob.Update())
         {
             hasActiveMeshJob       = false;
             hasCompletedJobWaiting = true;
             completedJob           = activeMeshJob;
             activeMeshJob          = null;
         }
     }
 }
    public bool Equals(GenerateMeshFromChunkJob check)
    {
        if (check == null)
        {
            return(false);
        }

        if (check.chunkCoordinates == chunkCoordinates)
        {
            return(true);
        }

        return(false);
    }
Esempio n. 6
0
    private void CheckActiveGenerationJob()
    {
        if (activeGenerationJob != null)
        {
            if (activeGenerationJob.Update())
            {
                hasActiveGenerationJob = false;

                GenerateMeshFromChunkJob meshJob = new GenerateMeshFromChunkJob();
                meshJob.chunkCoordinates = activeGenerationJob.chunkLocationToGenerate;
                meshJob.chunkVoxelArray  = activeGenerationJob.chunkVoxelArray;
                AddMeshJob(meshJob);

                activeGenerationJob = null;
            }
        }
    }
Esempio n. 7
0
 private void StartNextMeshJob()
 {
     activeMeshJob    = meshGenerationQueue.Dequeue();
     hasActiveMeshJob = true;
     activeMeshJob.Start();
 }
Esempio n. 8
0
 private void AddMeshJob(GenerateMeshFromChunkJob jobToAdd)
 {
     meshGenerationQueue.Enqueue(jobToAdd);
 }
Esempio n. 9
0
 public void Load(GenerateMeshFromChunkJob generatedChunkJob)
 {
     chunkVoxelArray  = generatedChunkJob.chunkVoxelArray;
     chunkCoordinates = generatedChunkJob.chunkCoordinates;
     UpdateMesh(generatedChunkJob.generatedMesh);
 }