class_name SceneManager extends Node2D const BulletScn = preload("res://scenes/bullet.tscn") @onready var game: Node2D = $".." 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 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