Files
PacketsPlease/outgoing_pipe.gd

69 lines
1.8 KiB
GDScript

extends Node3D
signal packet_received
var packet_scene = preload("res://Packet.tscn")
var packet_num = 100
var time_elapsed = 0
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
packet_num = 0
pass # Replace with function body.
var packet_container_scene = preload("res://packet_container.tscn")
func send_packet(packet):
var new_packet = packet_container_scene.instantiate()
new_packet.add_child(packet)
new_packet.packet = packet
packet.position = Vector3(0,0,0)
add_child(new_packet)
new_packet.position = $OutgoingRay.position
#new_packet.tunnel_velocity = $OutgoingRay/Target.global_position - $OutgoingRay.global_position
new_packet.constant_force = $OutgoingRay/Target.global_position - $OutgoingRay.global_position
new_packet.gravity_scale = 0
new_packet.set_collision_layer(128)
new_packet.set_collision_mask(128)
return new_packet
#if new_packet.move_and_collide(Vector3(0,0,100)) != null:
# remove_child(new_packet)
# new_packet.free()
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
time_elapsed += delta
if packet_num < 20 && time_elapsed > 0.5:
#spawn_packet()
packet_num = packet_num + 1
time_elapsed = 0
pass
func _on_exit_box_body_entered(body: Node3D) -> void:
remove_child(body)
packet_received.emit(body.packet)
body.queue_free()
var packet_drop = null
func _input(event):
if event.is_action_pressed("action") && packet_drop != null:
var new_packet = packet_drop.copy()
send_packet(new_packet)
func _on_drop_box_area_entered(area: Area3D) -> void:
$DropBox/DropHighlight.visible = true
packet_drop = area
var new_packet = packet_drop.copy()
send_packet(new_packet)
func _on_drop_box_area_exited(area: Area3D) -> void:
$DropBox/DropHighlight.visible = false
packet_drop = null