@tool extends GridMap class_name TerrainGen signal map_changed() @export var region: Rect2i = Rect2i(0,0,200,200): set(value): region = value generate() @export var noise: Noise: set(value): noise = value generate() @export var max_height: int = 10: set(value): max_height = value generate() func _ready() -> void: generate() func generate() -> void: clear() if noise == null: return for x in range(region.position.x, region.size.x): for y in range(region.position.y, region.size.y): var point: Vector2i = Vector2i(x,y) var noise_point: Vector2 = Vector2(point) var val: float = noise.get_noise_2d(noise_point.x, noise_point.y) var height: int = floori(((val + 1)/2.0) * max_height) var point_3d: Vector3i = Vector3i(point.x, height, point.y) set_cell_item(point_3d, 0) map_changed.emit()