2020-01-16 09:44:44 +01:00
|
|
|
extends Node2D
|
|
|
|
|
|
|
|
|
|
|
|
onready var spawner := $Spawner
|
|
|
|
|
2020-01-16 18:31:02 +01:00
|
|
|
export(float, 0, 2000, 40.0) var max_linear_speed := 600.0 setget set_max_linear_speed
|
|
|
|
export(float, 0, 200, 2.0) var max_linear_accel := 40.0 setget set_max_linear_accel
|
|
|
|
export(float, 0, 300, 2.0) var proximity_radius := 140.0 setget set_proximity_radius
|
|
|
|
export(float, 0, 10000, 100) var separation_decay_coefficient := 2000.0 setget set_separation_decay_coef
|
|
|
|
export(float, 0, 2, 0.1) var cohesion_strength := 0.1 setget set_cohesion_strength
|
|
|
|
export(float, 0, 6, 0.1) var separation_strength := 1.5 setget set_separation_strength
|
2020-01-16 16:04:27 +01:00
|
|
|
export var show_proximity_radius := true setget set_show_proximity_radius
|
|
|
|
|
|
|
|
|
|
|
|
func _ready() -> void:
|
|
|
|
spawner.setup(
|
|
|
|
max_linear_speed,
|
|
|
|
max_linear_accel,
|
|
|
|
proximity_radius,
|
|
|
|
separation_decay_coefficient,
|
|
|
|
cohesion_strength,
|
|
|
|
separation_strength,
|
|
|
|
show_proximity_radius
|
|
|
|
)
|
2020-01-16 09:44:44 +01:00
|
|
|
|
|
|
|
|
|
|
|
func set_max_linear_speed(value: float) -> void:
|
2020-01-16 18:31:02 +01:00
|
|
|
max_linear_speed = value
|
2020-01-16 09:44:44 +01:00
|
|
|
if not is_inside_tree():
|
|
|
|
return
|
|
|
|
|
|
|
|
spawner.set_max_linear_speed(value)
|
|
|
|
|
|
|
|
|
|
|
|
func set_max_linear_accel(value: float) -> void:
|
2020-01-16 18:31:02 +01:00
|
|
|
max_linear_accel = value
|
2020-01-16 09:44:44 +01:00
|
|
|
if not is_inside_tree():
|
|
|
|
return
|
|
|
|
|
|
|
|
spawner.set_max_linear_accel(value)
|
|
|
|
|
|
|
|
|
|
|
|
func set_proximity_radius(value: float) -> void:
|
2020-01-16 18:31:02 +01:00
|
|
|
proximity_radius = value
|
2020-01-16 09:44:44 +01:00
|
|
|
if not is_inside_tree():
|
|
|
|
return
|
|
|
|
|
|
|
|
spawner.set_proximity_radius(value)
|
|
|
|
|
|
|
|
|
|
|
|
func set_show_proximity_radius(value: bool) -> void:
|
2020-01-16 18:31:02 +01:00
|
|
|
show_proximity_radius = value
|
2020-01-16 09:44:44 +01:00
|
|
|
if not is_inside_tree():
|
|
|
|
return
|
|
|
|
|
|
|
|
spawner.set_show_proximity_radius(value)
|
|
|
|
|
|
|
|
|
|
|
|
func set_separation_decay_coef(value: float) -> void:
|
2020-01-16 18:31:02 +01:00
|
|
|
separation_decay_coefficient = value
|
2020-01-16 09:44:44 +01:00
|
|
|
if not is_inside_tree():
|
|
|
|
return
|
|
|
|
|
|
|
|
spawner.set_separation_decay_coef(value)
|
|
|
|
|
|
|
|
|
|
|
|
func set_cohesion_strength(value: float) -> void:
|
2020-01-16 18:31:02 +01:00
|
|
|
cohesion_strength = value
|
2020-01-16 09:44:44 +01:00
|
|
|
if not is_inside_tree():
|
|
|
|
return
|
|
|
|
|
|
|
|
spawner.set_cohesion_strength(value)
|
|
|
|
|
|
|
|
|
|
|
|
func set_separation_strength(value: float) -> void:
|
2020-01-16 18:31:02 +01:00
|
|
|
separation_strength = value
|
2020-01-16 09:44:44 +01:00
|
|
|
if not is_inside_tree():
|
|
|
|
return
|
|
|
|
|
|
|
|
spawner.set_separation_strength(value)
|