public void assignMaterials(WorldMapGenerator generator) { int heightID = 0; for(int i = 0; i < generator.heightLookup.Length; i++){ if(elevation < generator.heightLookup[i]){ heightID = i; break; } } int moistureID = 0; for(int i = 0; i < generator.moistureLookup.Length; i++){ if(moisture < generator.moistureLookup[i]){ moistureID = i; break; } } int temperatureID = 0; for(int i = 0; i < generator.temperatureLookup.Length; i++){ if(temperature < generator.temperatureLookup[i]){ temperatureID = i; break; } } traversable = heightID != 0; matID = heightID + moistureID * generator.heightLookup.Length + temperatureID * generator.moistureLookup.Length * generator.heightLookup.Length; }
void Awake() { Instance = this; MapGenerator = GetComponent <WorldMapGenerator>(); var infoObj = GameObject.FindWithTag("WorldDataInfo"); if (infoObj != null) { worldData = infoObj.GetComponent <WorldDataInfo>(); if (worldData == null) { worldData = infoObj.AddComponent <WorldDataInfo>(); } } else { infoObj = new GameObject("WorldDataInfoObject"); infoObj.tag = "WorldDataInfo"; worldData = infoObj.AddComponent <WorldDataInfo>(); } DontDestroyOnLoad(infoObj); foreach (var preset in presets) { sectors.Add(preset.position, null); } }
/// <summary> /// Если размер мира 1*1 в зависимости от сида генерим тот или иной тестовый мир, иначе генерим по чсестному /// </summary> public Surface() { Ambient = new FColor(1f, 1f, 1f, 0.9f).Multiply(1.0f); switch (Constants.WORLD_MAP_SIZE) { case 1: var r1 = new TestSurfaceGenerator1x1(World.Rnd); m_worldMap = r1.Generate(); City = new SuperCity(this, new Point(0, 0)); break; case 2: var r2 = new TestSurfaceGenerator2x2(World.Rnd); m_worldMap = r2.Generate(); City = new SuperCity(this, new Point(0, 0)); break; default: var worldMapGenerator = new WorldMapGenerator(Constants.WORLD_MAP_SIZE, World.Rnd); m_worldMap = worldMapGenerator.Generate(); if (Constants.WORLD_MAP_SIZE > 31) { var cityBlockIds = worldMapGenerator.FindCityPlace((int)Math.Sqrt(Constants.WORLD_MAP_SIZE) / 2).ToArray(); foreach (var id in cityBlockIds) { m_worldMap[id.X, id.Y] = EMapBlockTypes.CITY; } City = new SuperCity(this, cityBlockIds.Select(_point => new Point(_point.X - Constants.WORLD_MAP_SIZE / 2, _point.Y - Constants.WORLD_MAP_SIZE / 2)).ToArray()); } break; } }
public void generate(WorldMapGenerator generator) { //!--WorldMapGenerator--! float xMax = generator.flatHex.size.x * generator.size.x; float yMax = generator.flatHex.size.z * 0.75f * generator.size.y; float fault = calcFault(xMax, yMax); erosion = calcPerlin(generator.erosionSeed, generator.erosionScale); moisture = calcPerlin(generator.moistureSeed, generator.moistureScale) * generator.moistureWeight + erosion * generator.moistureErosionWeight; continent = calcPerlin(generator.continentSeed, generator.continentScale); elevation = (continent * generator.continentWeight + erosion * generator.erosionWeight) * fault; temperature = (1 - position.z / yMax) * generator.temperatureLocationWeight + calcPerlin(generator.temperatureSeed, generator.temperatureScale) * generator.temperatureNoiseWeight; }
public override void OnInspectorGUI() { WorldMapGenerator worldGen = (WorldMapGenerator)target; if (DrawDefaultInspector()) { ; } { if (worldGen.autoUpdate) { worldGen.BuildMap(); } } if (GUILayout.Button("Build World Map")) { worldGen.BuildMap(); } /* * if (GUILayout.Button("Save Settings")) * { * * binaryData.Write("hmsettings.bin", worldGen.hmSettings); * binaryData.Write("thischunksettings.bin", worldGen.thisChunk); * binaryData.Write("mmsettings.bin", worldGen.mmSettings); * * worldGen.SaveSettings(); * } * if (GUILayout.Button("Load Settings")) * { * * heightMapSettings hmSettings =binaryData.Read<heightMapSettings>("hmsettings.bin"); * worldGen.hmSettings = hmSettings; * worldChunkSettings thisChunk = binaryData.Read<worldChunkSettings>("thischunksettings.bin"); * moistureMapSettings mmSettings = binaryData.Read<moistureMapSettings>("mmsettings.bin"); * * worldGen.LoadSettings(); * } */ if (GUILayout.Button("Save PNG")) { worldGen.SavePng(); } }
// Start is called before the first frame update void Start() { instance = this; gameMap = new Dictionary <Vector2Int, GameTile>(); // Make up some players to spawn Player player1 = new Player(); player1.nationName = "The Union"; player1.color = Color.blue; Player player2 = new Player(); player2.color = Color.red; player2.nationName = "The Confederacy"; startingPlayers = new List <Player> { player1, player2 }; WorldMapGenerator.StartGeneration(WORLD_X, WORLD_Y, UnityEngine.Random.value * 1000, this.startingPlayers.Count, OnGenFinished, this); }