69 lines
1.8 KiB
GDScript
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
|