Ejemplo n.º 1
0
    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++;
    }
Ejemplo n.º 2
0
    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)));
        }
    }
Ejemplo n.º 3
0
    void OnValidate()
    {
        if (lacunarity < 1)
        {
            lacunarity = 1;
        }
        if (octaves < 0)
        {
            octaves = 0;
        }

        falloffMap = FalloffGenerator.GenerateFalloffMap(mapHeight);

        overlayMap = OverlayGenerator.GenerateOverlayMap(mapHeight);
    }
Ejemplo n.º 4
0
        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)
                );
        }
Ejemplo n.º 5
0
 public TerrainMenu()
 {
     terrainSize      = new Vector2Int(10, 10);
     terrainGenerator = new TerrainGenerator();
     overlayGenerator = new OverlayGenerator();
 }
Ejemplo n.º 6
0
    private void CreateGrid()
    {
        OverlayGenerator overlayGenerator = new OverlayGenerator(terrainFolder: terrainFolder);

        overlayGenerator.GenerateGridForTerrain(DEFAULT_TERRAIN);
    }
Ejemplo n.º 7
0
    void Awake()
    {
        falloffMap = FalloffGenerator.GenerateFalloffMap(mapHeight);

        overlayMap = OverlayGenerator.GenerateOverlayMap(mapHeight);
    }