Changed resource spawning
added interact functionality temp added zoom with scroll wheel
This commit is contained in:
34
scripts/spawn_pattern.gd
Normal file
34
scripts/spawn_pattern.gd
Normal file
@@ -0,0 +1,34 @@
|
||||
extends Resource
|
||||
class_name SpawnPattern
|
||||
|
||||
@export var min_distance: int
|
||||
@export var max_distance: int
|
||||
@export var min_spread: int
|
||||
@export var quantity: int
|
||||
@export var cluster_size: int
|
||||
|
||||
func get_spawn_locations() -> Array[Vector2i]:
|
||||
var spawns: Array[Vector2i] = []
|
||||
var clusters: Array[Vector2] = []
|
||||
for cluster_i in range(quantity):
|
||||
var cluster
|
||||
var is_valid_cluster := false
|
||||
while not is_valid_cluster:
|
||||
is_valid_cluster = true
|
||||
var dist = randf_range(min_distance, max_distance)
|
||||
var angle = randf_range(0, 2*PI)
|
||||
cluster = Vector2.RIGHT.rotated(angle)
|
||||
cluster *= dist
|
||||
for old_cluster: Vector2 in clusters:
|
||||
is_valid_cluster = is_valid_cluster and old_cluster.distance_to(cluster) > min_spread
|
||||
clusters.append(cluster)
|
||||
|
||||
var local_spawns = [Vector2i(cluster)]
|
||||
for point in range(cluster_size - 1):
|
||||
var next = local_spawns.pick_random()
|
||||
while local_spawns.has(next):
|
||||
var next_change = [Vector2i.LEFT, Vector2i.RIGHT, Vector2i.UP, Vector2i.DOWN].pick_random()
|
||||
next = next + next_change
|
||||
local_spawns.append(next)
|
||||
spawns.append_array(local_spawns)
|
||||
return spawns
|
||||
Reference in New Issue
Block a user