public static PerlinCityGenerator CreatePerlinCityGenerator(GenerationController controller) { GameObject cityGenObj = new GameObject("City Generator"); cityGenObj.transform.SetParent(controller.gameObject.transform); PerlinCityGenerator cityGen = cityGenObj.AddComponent <PerlinCityGenerator>(); controller.cityGenerator = cityGen; cityGen.heightMap = controller.heightMap; cityGen.terrainGenerator = controller.terrainGenerator; cityGen.roadPainter = cityGenObj.AddComponent <RoadPainter>(); cityGen.roadPainter.terrainData = controller.terrainGenerator.terrain.terrainData; cityGen.buildingGenerator = cityGenObj.AddComponent <BuildingGenerator>(); return(cityGen); }
protected override void OnEnable() { base.OnEnable(); cityGenerator = (PerlinCityGenerator)target; }
public override void OnInspectorGUI() { serializedObject.Update(); EditorGUILayout.PropertyField(_seed); EditorGUILayout.PropertyField(_terrainGen); if (!controller.terrainGenerator.CanGenerate()) { TerrainGenerationEditor terEditor = (TerrainGenerationEditor)CreateEditor(controller.terrainGenerator); terEditor.ShowMissingGenRequirements(); } EditorGUILayout.PropertyField(_cityGen); if (controller.cityGenerator == null) { cityGenTab = GUILayout.Toolbar(cityGenTab, cityGenNames); switch (cityGenTab) { case 1: CityBiomeGenerator gen = CityBiomeGeneratorEditor.CreateRecursiveDetailGenerator(controller); // CreateCityGenerator<CityBiomeGenerator>(); //gen.terrain = controller.terrainGenerator.terrain; break; case 2: PerlinCityGenerator pGen = PerlinCityGeneratorEditor.CreatePerlinCityGenerator(controller); //pGen.terrainGenerator = controller.terrainGenerator; break; case 3: LSystemGeneration lGen = CreateCityGenerator <LSystemGeneration>(); lGen.terrainGenerator = controller.terrainGenerator; break; } } else if (!controller.cityGenerator.CanGenerate()) { GeneratorEditor cityEditor = (GeneratorEditor)CreateEditor(controller.cityGenerator); cityEditor.ShowMissingGenRequirements(); } else if (controller.terrainGenerator.CanGenerate()) { if (GUILayout.Button("Generate")) { controller.SetupAndGenerate(); } if (GUILayout.Button("Clear Buildings")) { while (controller.cityGenerator.transform.childCount > 0) { Transform child = controller.cityGenerator.transform.GetChild(0); DestroyImmediate(child.gameObject); } if (controller.cityGenerator is LSystemGeneration) { ((LSystemGeneration)controller.cityGenerator).clearBuildings(); } } } serializedObject.ApplyModifiedProperties(); /* * if (GUILayout.Button("Save Heightmap")) * { * Texture2D tex = controller.terrainGenerator.biomeTexture; * string fileName = Application.persistentDataPath + "/" + tex.name + ".png"; * File.WriteAllBytes(fileName, tex.EncodeToPNG()); * Debug.Log("Saved to " + fileName); * } */ }