class_name Arena extends Node3D # A reusable stadium: terrain, lighting, environment, two team goals, and # spawn markers. An arena holds no rules and no state — game modes query it # for spawn transforms and goals, then spawn ships/ball themselves. func _ready(): add_to_group("arena") func get_ball_spawn() -> Transform3D: return $BallSpawn.global_transform func get_ship_spawns(team: int) -> Array[Transform3D]: var spawns: Array[Transform3D] = [] var container := get_node_or_null("SpawnsTeam%d" % team) if container: for child in container.get_children(): if child is Marker3D: spawns.append(child.global_transform) return spawns func get_goals() -> Array[Goal]: var goals: Array[Goal] = [] for child in get_children(): if child is Goal: goals.append(child) return goals