Skip to content

Commit e391cf4

Browse files
committed
World Generator as a scriptable object
1 parent 70c30b7 commit e391cf4

17 files changed

+117
-90
lines changed

Demo/Demo-URP.unitypackage

50.2 KB
Binary file not shown.

Editor/WorldMapGeneratorEditor.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
namespace Gameframe.Procgen
55
{
6-
[CustomEditor(typeof(WorldMapGenerator), true)]
6+
[CustomEditor(typeof(WorldMapGenController), true)]
77
public class WorldMapGeneratorEditor : Editor
88
{
99
private bool autoUpdate = false;
@@ -14,14 +14,14 @@ public override void OnInspectorGUI()
1414
base.OnInspectorGUI();
1515
if (EditorGUI.EndChangeCheck() && autoUpdate)
1616
{
17-
((WorldMapGenerator) target).GenerateMap();
17+
((WorldMapGenController) target).GenerateMap();
1818
}
1919

2020
autoUpdate = EditorGUILayout.Toggle("Auto Update", autoUpdate);
2121

2222
if (GUILayout.Button("Generate"))
2323
{
24-
((WorldMapGenerator) target).GenerateMap();
24+
((WorldMapGenController) target).GenerateMap();
2525
}
2626
}
2727
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
namespace Gameframe.Procgen
2+
{
3+
public interface IWorldMapLayerData
4+
{
5+
}
6+
}

Runtime/WorldMap/Layers/WorldMapLayerData.cs.meta renamed to Runtime/WorldMap/IWorldMapLayerData.cs.meta

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Runtime/WorldMap/Layers/HeightMapLayerData.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
namespace Gameframe.Procgen
22
{
33
[System.Serializable]
4-
public class HeightMapLayerData : WorldMapLayerData
4+
public class HeightMapLayerData : IWorldMapLayerData
55
{
66
public float[] heightMap;
77
}

Runtime/WorldMap/Layers/HeightMapLayerGenerator.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33

44
namespace Gameframe.Procgen
55
{
6-
[CreateAssetMenu]
7-
public class HeightMapLayerGenerator : ScriptableObject
6+
[CreateAssetMenu(menuName = "Gameframe/Procgen/Layers/HeightMapLayerGenerator")]
7+
public class HeightMapLayerGenerator : WorldMapLayerGenerator
88
{
99
public enum MapType
1010
{
@@ -66,7 +66,7 @@ public HeightMapLayerData Generate(int width, int height, int seed)
6666
};
6767
}
6868

69-
public void AddToWorld(WorldMapData worldMapData)
69+
public override void AddToWorld(WorldMapData worldMapData)
7070
{
7171
worldMapData.layers.Add(Generate(worldMapData.width,worldMapData.height,worldMapData.seed));
7272
}

Runtime/WorldMap/Layers/PoissonMapLayerData.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
namespace Gameframe.Procgen
55
{
66
[System.Serializable]
7-
public class PoissonMapLayerData : WorldMapLayerData
7+
public class PoissonMapLayerData : IWorldMapLayerData
88
{
99
public List<Vector2Int> points = new List<Vector2Int>();
1010
}

Runtime/WorldMap/Layers/PoissonMapLayerGenerator.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
namespace Gameframe.Procgen
44
{
5-
[CreateAssetMenu]
6-
public class PoissonMapLayerGenerator : ScriptableObject
5+
[CreateAssetMenu(menuName = "Gameframe/Procgen/Layers/PoissonMapLayerGenerator")]
6+
public class PoissonMapLayerGenerator : WorldMapLayerGenerator
77
{
88
public float radius = 10;
99
public int maxSamplesPerPoint = 30;
1010
public bool useRegions = true;
1111
public int edgeAvoidance = 0;
1212

13-
public void AddToWorld(WorldMapData mapData)
13+
public override void AddToWorld(WorldMapData mapData)
1414
{
1515
if (useRegions)
1616
{

Runtime/WorldMap/Layers/RegionMapLayerData.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
namespace Gameframe.Procgen
55
{
66
[System.Serializable]
7-
public class RegionMapLayerData : WorldMapLayerData
7+
public class RegionMapLayerData : IWorldMapLayerData
88
{
99
public int[] regionMap;
1010
public List<RegionData> regions = new List<RegionData>();

Runtime/WorldMap/Layers/RegionMapLayerGenerator.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44

55
namespace Gameframe.Procgen
66
{
7-
[CreateAssetMenu]
8-
public class RegionMapLayerGenerator : ScriptableObject
7+
[CreateAssetMenu(menuName = "Gameframe/Procgen/Layers/RegionMapLayerGenerator")]
8+
public class RegionMapLayerGenerator : WorldMapLayerGenerator
99
{
1010
public int regionCount = 5;
1111
public float waterLevel = 0.2380952f;
1212

13-
public void AddToWorld(WorldMapData mapData)
13+
public override void AddToWorld(WorldMapData mapData)
1414
{
1515
var rng = new System.Random(mapData.seed);
1616
var regionLayer = new RegionMapLayerData();

0 commit comments

Comments
 (0)