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; }
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; } } }