class_name GenerationFeature extends Node3D ## Base class for world features generated during worldgen. ## ## Layers contain features. Some features may contain layers. @export var noise_scale := Vector3.ONE @export var noise_offset := Vector3.ZERO @export var sub_layers: Array[GenerationLayer] var _generated := false func probe() -> void: # TODO may want to make low-detail & high-detail probes distinct if not _generated: generate() _generated = true for layer in sub_layers: layer.probe() ## Generate elements of this feature. Called by default on the first call to `probe` func generate() -> void: pass # Implemented in derived type func sample_noise() -> float: var sample_point := global_position * noise_scale + noise_offset return WorldGenManager.noise.get_noise_3dv(sample_point)