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;
 }
Ejemplo n.º 3
0
    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);
         * }
         */
    }