Ejemplo n.º 1
0
    private void CreatePrefabForChunk(Chunk chunk)
    {
        Vector3 chunkGameObjectPosition =
            new Vector3(chunk.Position.X, chunk.Position.Z, chunk.Position.Y);
        Transform chunkGameObject =
            Instantiate(Chunk_Prefab, chunkGameObjectPosition, Quaternion.identity) as Transform;

        chunkGameObject.parent = m_ChunksParent;
        chunkGameObject.name   = chunk.ToString();
        //m_ChunkGameObjects[x, y, z] = chunkGameObject;
        ChunkGameObjectScript chunkGameObjectScriptScript = chunkGameObject.GetComponent <ChunkGameObjectScript>();

        chunkGameObjectScriptScript.Texture = WorldTextureAtlas;
        chunk.ChunkTransform = chunkGameObject;
    }
Ejemplo n.º 2
0
    private void CreatePrefabsFromFinishedChunks()
    {
        while (m_ChunkProcessor.MeshCreationQueue.Count > 0)
        {
            if (!m_ReadyToActivatePlayer)
            {
                m_ReadyToActivatePlayer = true;
                Player.transform.gameObject.SetActiveRecursively(true);

                m_PlayerChunkPosition = CurrentPlayerChunkPosition();
            }

            // Don't freeze everything by drawing them every frame
            if (m_LastChunkGameObjectCreationTime + TimeSpan.FromSeconds(0.001) > DateTime.Now)
            {
                return;
            }
            m_LastChunkGameObjectCreationTime = DateTime.Now;
            Chunk chunk = m_ChunkProcessor.MeshCreationQueue.Dequeue();

            if (chunk == null)
            {
                return;
            }

            if (chunk.ChunkTransform == null)
            {
                CreatePrefabForChunk(chunk);
            }

            Transform             chunkTransform = (Transform)chunk.ChunkTransform;
            ChunkGameObjectScript chunkGameObjectScriptScript = chunkTransform.GetComponent <ChunkGameObjectScript>();
            ((IPrefab)chunkGameObjectScriptScript).World = m_World;

            chunkGameObjectScriptScript.CreateFromChunk(chunk, m_PrefabsByName);

            if (!m_ProcessAllChunksAtOnce)
            {
                return;
            }
        }
    }