TowerGame/TerrainGen.gd

38 lines
844 B
GDScript

@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()