@tool extends Composer class_name Spawner @export var unit_type: PackedScene @export var spawn_duration = 1.0 @export var player: Node: set(val): if val is Player: player = val else: player = null @export var delivery = Vector2(100.0, 0.0): set(val): delivery = val _check_compose() var _spawning_since = 0.0 func _compose(): $delivery.position = delivery func _physics_process(delta): if Engine.is_editor_hint(): return _spawning_since += delta if _spawning_since > spawn_duration: spawn() func get_battlefield() -> BattleField: return find_parent("battlefield") as BattleField func spawn(): if unit_type: var unit := unit_type.instantiate() if unit is Unit: _spawning_since = min(0.0, _spawning_since - spawn_duration) unit.player = player var battlefield := get_battlefield() if battlefield: battlefield.add_child(unit) else: add_child(unit) unit.global_position = global_position unit.move_to(delivery)