class_name SCENEMANAGER extends Node2D const bulletscn = preload("res://Scenes/bullet.tscn") @onready var game: Node2D = $".." @onready var triggers: Node2D = $"../Triggers" func _ready() -> void: if triggers: for obj in triggers.get_children(): if obj is Trigger: obj.areaTriggerSignal.connect(game._on_trigger) var bullets: Array[Bullet] = [] const MAX_BULLETS = 10 var current_bullet = 0 # makes and recycles bullets func bulletFactory() -> Bullet: if len(bullets) < MAX_BULLETS: # create new bujllet var b = bulletscn.instantiate() b.bulletDamageSignal.connect(game.bulletDamage) add_child(b) bullets.append(b) return b else: # recycle var i = current_bullet current_bullet = (current_bullet + 1) % MAX_BULLETS bullets[i].visible = true return bullets[i] func makeBullet(pos: Transform2D, dir: int) -> Node2D: var b = bulletFactory() # b.position = pos.get_origin() b.transform = pos b.setSpeed(dir * 700) return b