void Start() { _chunkNames = new List <string>(); Map = new GameObject(); Detectors = GameObject.FindGameObjectsWithTag("Detector"); var player = GameObject.FindGameObjectWithTag("Player").transform; InitializeChunk(ChunkGen.GenerateChunk(), (int)(player.position.x / ChunkGen.ChunkWidth), (int)(player.position.y / ChunkGen.ChunkHeight)); ClearSpawn(); }
/// <summary> /// Iterates all chunk coordinates in the region. /// Checks if <see cref="PreGeneratedChunks"/> contains one of these chunks. /// If it does, we set the chunk based on the settlement chunk. /// If not, we generate the chunk via <see cref="ChunkGenerator.GenerateChunk(int, int)"/> /// </summary> /// <param name="rx"></param> /// <param name="rz"></param> /// <returns></returns> public ChunkRegion GenerateRegion(int rx, int rz) { //Define array for all chunks ChunkData[,] regionChunks = new ChunkData[World.RegionSize, World.RegionSize]; //Iterate all chunks in region for (int cx = 0; cx < World.RegionSize; cx++) { for (int cz = 0; cz < World.RegionSize; cz++) { //Define chunk coordinate Vec2i chunkCoord = new Vec2i(rx * World.RegionSize + cx, rz * World.RegionSize + cz); //Check if this chunk is a settlement chunk, if it is, set it as such if (PreGeneratedChunks.ContainsKey(chunkCoord)) { regionChunks[cx, cz] = PreGeneratedChunks[chunkCoord]; } else { //otherwise, generate the chunk via regionChunks[cx, cz] = ChunkGenerator.GenerateChunk(rx * World.RegionSize + cx, rz * World.RegionSize + cz); } } } return(new ChunkRegion(rx, rz, regionChunks)); }
void GenerateWorld() { for (int y = 0; y < ServerConstants.TerrainGeneration.WORLD_SIZE; y++) { for (int x = 0; x < ServerConstants.TerrainGeneration.WORLD_SIZE; x++) { _chunks.Add(new Vector2DInt(x, y), chunkGenerator.GenerateChunk(new Vector2DInt(x, y))); } } }
public void OnUpdate() { if (IsChunkToSpawn()) { chunkGenerator.GenerateChunk(setOfChunks, visibleChunks, player.currentChunk, player.transform.position, camer.rangeCamera); } if (biomeGridGenerator.IsIncreaseGrid(Vector2.Distance(player.transform.position, Vector3.zero))) { biomeGridGenerator.GenerateGridEdges(); } }
private void Test() { Noise.Seed = ++Noise.Seed; for (int x = 0; x < 6; x++) { for (int z = 0; z < 6; z++) { Generator.GenerateChunk(new Vector2(x, z)); } } }
// Creates a chunk for the first time on it's position private IEnumerator CreateChunk(Vector3 chunkPos) { ChunkGenerator newChunk = Instantiate(chunkGeneratorPrefab, chunkPos, Quaternion.identity, transform); newChunk.UpdateName(); if (!chunkTable.ContainsKey(chunkPos)) { chunkTable.Add(chunkPos, newChunk); newChunk.SetChunkSetup(); newChunk.SetBoxCollider(); yield return(newChunk.GenerateChunk(GetPerlinOffset(newChunk.transform.position))); } }
/* Base */ void Start() { _chunkGenerator = new ChunkGenerator(this); int chunkSize = worldGenData.chunkSize; for (int i = 0; i < 9; i++) { Chunk newChunk = _chunkGenerator.GenerateChunk(); switch (i) { case 0: newChunk.gameObject.transform.position = new Vector3(-chunkSize, chunkSize, 0); break; case 1: newChunk.gameObject.transform.position = new Vector3(0, chunkSize, 0); break; case 2: newChunk.gameObject.transform.position = new Vector3(chunkSize, chunkSize, 0); break; case 3: newChunk.gameObject.transform.position = new Vector3(-chunkSize, 0, 0); break; case 4: newChunk.gameObject.transform.position = new Vector3(0, 0, 0); break; case 5: newChunk.gameObject.transform.position = new Vector3(chunkSize, 0, 0); break; case 6: newChunk.gameObject.transform.position = new Vector3(-chunkSize, -chunkSize, 0); break; case 7: newChunk.gameObject.transform.position = new Vector3(0, -chunkSize, 0); break; case 8: newChunk.gameObject.transform.position = new Vector3(chunkSize, -chunkSize, 0); break; } } }
IEnumerator GenerateChunks() { _isGeneratingChunks = true; while (_chunksToGenerate.Count > 0) { Vector2 newChunkCoord = _chunksToGenerate[0]; _worldChunks.Add(newChunkCoord, _chunkGenerator.GenerateChunk(newChunkCoord, material)); _chunksToGenerate.RemoveAt(0); } _isGeneratingChunks = false; yield return(null); }
/// <summary> /// Creates a chunk at the given position. /// </summary> /// <param name="position">The world coordinates.</param> public void CreateChunk(WorldPosition position) { var newChunkObject = UnityEngine.Object.Instantiate( World.chunkPrefab, new Vector3(position.X, position.Y, position.Z), Quaternion.Euler(Vector3.zero)) as GameObject; var newChunk = newChunkObject.GetComponent <Chunk>(); newChunk.Position = position; newChunk.World = this; this.Chunks.Add(position, newChunk); var terrainGenerator = new ChunkGenerator(); terrainGenerator.GenerateChunk(newChunk); newChunk.SetBlocksUnmodified(); WorldRepository.LoadChunk(newChunk); }
/* Internal methods */ private IEnumerator GenerateChunks() { _isGeneratingChunks = true; while (_chunksToGenerateCoordsQueue.Count > 0) { _worldChunks.Add(_chunksToGenerateCoordsQueue[0], _chunkGenerator.GenerateChunk(_chunksToGenerateCoordsQueue[0])); _chunksToGenerateCoordsQueue.RemoveAt(0); yield return(null); } yield return(null); _isGeneratingChunks = false; }
public void ManualUpdate() { while (_chunksToDelete.Count > 0) { Destroy(_chunks[_chunksToDelete[0]].viewGO); _chunks.Remove(_chunksToDelete[0]); _chunksToDelete.RemoveAt(0); } while (_chunksToGenerate.Count > 0) { Vector2DInt newChunkPosition = _chunksToGenerate[0]; _chunks.Add(newChunkPosition, chunkGenerator.GenerateChunk(newChunkPosition)); _chunksToGenerate.RemoveAt(0); } }
// Networking public void UnpackFrom(NetIncomingMessage inMsg) { // Get the world data from the server uint inChunkSize = inMsg.ReadVariableUInt32(); // Chunk size uint numParameters = inMsg.ReadVariableUInt32(); // Number of parameters _data.parameters = new Noise.Parameters[numParameters]; for (int i = 0; i < numParameters; i++) // Parameters { _data.parameters[i].UnpackFrom(inMsg); } // Create the chunkgenerator now that the world variables have been recieved chunkGenerator = new ChunkGenerator(inChunkSize, _data.parameters, this); // DEBUG Generate a chunk in the middle as a test _worldChunks.Add(new Vector2DI(0, 0), chunkGenerator.GenerateChunk(new Vector2DI(0, 0))); }
private void GenerateMap() { for (int i = 0; i < mapSizeInChunks; i++) { for (int j = 0; j < mapSizeInChunks; j++) { int chunkSize = ChunkGenerator.chunkSize; Vector3 chunkPosition = new Vector3(i * chunkSize, 0, j * chunkSize); ChunkGenerator chunkGenerator = Instantiate( chunkPrefab, chunkPosition, Quaternion.identity) .GetComponent <ChunkGenerator>(); chunkGenerator.frequencyScale = this.frequencyScale; chunkGenerator.heightMultiplier = this.heightMultiplier; chunkGenerator.numberOfOctaves = this.numberOfOctaves; chunkGenerator.lacunarity = this.lacunarity; chunkGenerator.persistence = this.persistence; chunkGenerator.GenerateChunk(new Vector2(chunkPosition.x, chunkPosition.z)); chunkGOs.Add(chunkGenerator.gameObject); } } }