extends Node class_name SpawnManager2D @export var scene: PackedScene @export var minCount = 1 @export var maxCount = 2 @export var spawnRange: Rect2 = Rect2(0, 0, 0, 0) var _currentCount = 0 # Called when the node enters the scene tree for the first time. func _ready() -> void: _spawn_minimum() # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: pass func _spawn_minimum() -> void: while _currentCount < minCount and _currentCount < maxCount: _spawn_random() func _random_pos() -> Vector2: return Vector2(randf_range(spawnRange.position[0], spawnRange.size[0]), randf_range(spawnRange.position[1], spawnRange.size[1])) func _spawn_random() -> void: var pos = _random_pos() _spawn_creature(pos) _currentCount += 1 func _spawn_creature(position: Vector2) -> void: var instance = scene.instantiate() instance.position = position add_child(instance) if instance.has_signal("died"): instance.died.connect(_on_entity_died) func _on_entity_died() -> void: _currentCount = max(0, _currentCount-1) _spawn_minimum()