void Start() { GameObject seedObject = GameObject.Find(MapGeneratorSeed.objectName); if (seedObject == null) { seedObject = new GameObject(MapGeneratorSeed.objectName); mapGeneratorSeed = seedObject.AddComponent <MapGeneratorSeed>(); DontDestroyOnLoad(seedObject); } else { mapGeneratorSeed = seedObject.GetComponent <MapGeneratorSeed>(); } buttonPlay.onClick.AddListener(OnPlayClick); buttonQuit.onClick.AddListener(OnQuitClick); buttonAbout.onClick.AddListener(OnAboutClick); buttonRandomSeed.onClick.AddListener(OnRandomSeedClick); buttonGenerate.onClick.AddListener(OnGenerateClick); buttonCancel.onClick.AddListener(OnCancelClick); buttonBack.onClick.AddListener(OnBackClick); Random.InitState((int)System.DateTime.Now.Ticks); OnRandomSeedClick(); }
public MapData GenerateMapData(Vector2 center) { GameObject seedObject = GameObject.Find(MapGeneratorSeed.objectName); if (seedObject != null) { MapGeneratorSeed mapGeneratorSeed = seedObject.GetComponent <MapGeneratorSeed>(); noiseGenerator.SetSeed(mapGeneratorSeed.GetSeed()); } float[,] noiseMap = noiseGenerator.Generate(mapWidth, mapHeight, center + offset); float[,] falloffMap = new float[0, 0]; bool useFalloff = falloffGenerator != null; if (useFalloff) { falloffMap = falloffGenerator.Generate(mapWidth, mapHeight); } for (int y = 0; y < mapHeight; y++) { for (int x = 0; x < mapWidth; x++) { if (useFalloff) { noiseMap[x, y] = Mathf.Clamp(noiseMap[x, y] - falloffMap[x, y], 0, 1); } float currentHeight = noiseMap[x, y]; if (currentHeight > maxNoiseHeight) { maxNoiseHeight = currentHeight; } } } maxHeight = transform.localScale.y * heightMultiplier * heightCurve.Evaluate(1) * maxNoiseHeight; textureData.UpdateData(terrainMaterial, minHeight, maxHeight); return(new MapData(noiseMap)); }