@tool class_name StackedSpawnPattern extends BulletSpawnPattern ## Spawns a pattern in a "stack". The pattern will be spawned multiple ## times at once with a varying [code]bullet_speed[/code]. ## The subpattern to stack. @export var pattern: BulletSpawnPattern ## The number of times to "stack" up the pattern. @export_range(1, 1, 1, "or_greater") var stack_count: int = 1 ## The minimum speed of the stacked patterns. @export var min_speed: float: set(value): if min_speed != value: min_speed = value max_speed = maxf(min_speed, max_speed) ## The maximum speed of the stacked patterns. @export var max_speed: float: set(value): if max_speed != value: max_speed = value min_speed = minf(min_speed, max_speed) func _spawn_bullets(bullet_set: BulletSet, preset: BulletPreset) -> void: for i in stack_count: pattern.set( &"bullet_speed", remap(float(i), 0.0, float(stack_count - 1), min_speed, max_speed) ) pattern.spawn_bullets(bullet_set, preset)