Files
GrowlerFury/scripts/controllers/spawn_system/spawner.gd
T

52 lines
1.2 KiB
GDScript

class_name Spawner extends Area3D
@export var faction: Globals.Faction = Globals.Faction.NEUTRAL
var is_available: bool = true
var delay_timer: Timer = null
func _ready() -> void:
_debug_setup()
func _debug_setup() -> void:
if not Globals.debugging:
visible = false
return
var timer = get_tree().create_timer(0.200)
await timer.timeout
visible = true
var visual_node: MeshInstance3D = get_node("visual")
var visual_node2: MeshInstance3D = get_node("visual_direction")
visual_node.mesh.material.albedo_color = Globals.FactionColor[faction]
visual_node2.mesh.material.albedo_color = Globals.FactionColor[faction]
func _on_area_body_entered(_body: Jet) -> void:
if delay_timer:
delay_timer.stop()
delay_timer = null
func _on_area_body_exited(_body: Jet) -> void:
delay_timer = Timer.new()
delay_timer.one_shot = true
delay_timer.timeout.connect(can_spawn)
func set_can_spawn(availablity: bool = true) -> void:
is_available = availablity
func can_spawn() -> void:
is_available = true
func cannot_spawn() -> void:
is_available = false
func align_to_position(jet: Jet) -> void:
jet.global_position = global_position
jet.rotation = rotation