public void NewGameState(string gameStateString) { // Convert the string to our DTO format. GameStateDTO gameState = ConvertJSONtoDTO(gameStateString); // Check if this is the first game-state event received. If so, set // up the terrain and don't do it ever again. if (gameStateEventCount == 1) { TerrainGenerator terrainGenerator = new TerrainGenerator(); int width = terrainGenerator.CalculateWidthFromGameState(gameState); int height = terrainGenerator.CalculateHeightFromGameState(gameState); TerrainDTO terrainDTO = new TerrainDTO(width, height); terrainGenerator.GenerateTerrainMMO(terrainDTO); OverlayGenerator overlayGenerator = new OverlayGenerator(terrainFolder: terrainGenerator.terrainFolder); overlayGenerator.GenerateGridForTerrain(terrainDTO); // Generate the obstacles only on initial game creation. Don't duplicate. ObstacleDTO[] obstacles = gameState.obstacles; obstacleManager.UpdateFeatures(obstacles); } RenderGameState(gameState); gameStateEventCount++; }
public void GenerateMap() { float[,] noiseMap = Noise.GenerateNoiseMap(mapWidth, mapHeight, seed, noiseScale, octaves, persistance, lacunarity, offset); Color[] colourMap = new Color[mapWidth * mapHeight]; for (int y = 0; y < mapHeight; y++) { for (int x = 0; x < mapWidth; x++) { if (useFalloff) { noiseMap[x, y] = Mathf.Clamp01(noiseMap[x, y] - falloffMap[x, y]); } if (useOverlay) { noiseMap[x, y] = Mathf.Clamp01(noiseMap[x, y] - overlayMap[x, y]); } float currentHeight = noiseMap[x, y]; for (int i = 0; i < regions.Length; i++) { if (currentHeight <= regions[i].height) { colourMap[y * mapWidth + x] = regions[i].colour; break; } } } } MapDisplay display = FindObjectOfType <MapDisplay>(); if (drawMode == DrawMode.NoiseMap) { display.DrawTexture(TextureGenerator.TextureFromHeightMap(noiseMap)); } else if (drawMode == DrawMode.ColourMap) { display.DrawTexture(TextureGenerator.TextureFromColourMap(colourMap, mapWidth, mapHeight)); } else if (drawMode == DrawMode.FalloffMap) { display.DrawTexture(TextureGenerator.TextureFromHeightMap(FalloffGenerator.GenerateFalloffMap(mapHeight))); } else if (drawMode == DrawMode.Mesh) { display.DrawMesh(MeshGenerator.GenerateTerrainMesh(noiseMap), TextureGenerator.TextureFromColourMap(colourMap, mapWidth, mapHeight)); } else if (drawMode == DrawMode.OverlayMap) { display.DrawTexture(TextureGenerator.TextureFromHeightMap(OverlayGenerator.GenerateOverlayMap(mapHeight))); } }
void OnValidate() { if (lacunarity < 1) { lacunarity = 1; } if (octaves < 0) { octaves = 0; } falloffMap = FalloffGenerator.GenerateFalloffMap(mapHeight); overlayMap = OverlayGenerator.GenerateOverlayMap(mapHeight); }
public void TestGridGeneratedByDTO() { SetUpMainScene(); TerrainDTO terrainDTO = new TerrainDTO(81, 2); GameObject terrainFolder = new GameObject(); OverlayGenerator overlayGenerator = new OverlayGenerator(terrainFolder: terrainFolder); GameObject generatedGrid = overlayGenerator.GenerateGridForTerrain(terrainDTO); Assert.AreEqual(generatedGrid.transform.parent, terrainFolder.transform); Assert.AreEqual(generatedGrid.transform.name, "overlay_grid(Clone)"); Assert.AreEqual(generatedGrid.transform.transform.localPosition.x, 0); Assert.AreEqual(generatedGrid.transform.transform.localPosition.y, 0.01f); Assert.AreEqual(generatedGrid.transform.transform.localPosition.z, 0); Assert.AreEqual( generatedGrid.GetComponent <Renderer>().sharedMaterial.mainTextureScale, new Vector2(81, 2) ); }
public TerrainMenu() { terrainSize = new Vector2Int(10, 10); terrainGenerator = new TerrainGenerator(); overlayGenerator = new OverlayGenerator(); }
private void CreateGrid() { OverlayGenerator overlayGenerator = new OverlayGenerator(terrainFolder: terrainFolder); overlayGenerator.GenerateGridForTerrain(DEFAULT_TERRAIN); }
void Awake() { falloffMap = FalloffGenerator.GenerateFalloffMap(mapHeight); overlayMap = OverlayGenerator.GenerateOverlayMap(mapHeight); }