43 lines
1.1 KiB
GDScript
43 lines
1.1 KiB
GDScript
# client_node.gd
|
|
class_name ClientNode
|
|
extends Node
|
|
|
|
var udp = PacketPeerUDP.new()
|
|
var connected = false
|
|
|
|
var fast_broadcast_rate = 1.0
|
|
var slow_broadcast_rate = 10.0
|
|
var current_broadcast_rate = fast_broadcast_rate
|
|
var last_broadcast = 0
|
|
|
|
var ip_address: String = ""
|
|
|
|
func _ready():
|
|
_try_set_ip()
|
|
udp.set_broadcast_enabled(true)
|
|
udp.set_dest_address("192.168.0.255", 5000)
|
|
SensorSignals.new_sensor_connected.connect(_on_sensor_connected)
|
|
|
|
func _process(delta):
|
|
if ip_address.length() == 0:
|
|
_try_set_ip()
|
|
return
|
|
last_broadcast += delta
|
|
if last_broadcast >= current_broadcast_rate:
|
|
# Try to contact server
|
|
last_broadcast = 0
|
|
var broadcast_str = ip_address + "|%s" % Time.get_datetime_string_from_system(true)
|
|
print('Broadcasting to UDP: ', broadcast_str)
|
|
udp.put_packet(broadcast_str.to_utf8_buffer())
|
|
|
|
func _try_set_ip():
|
|
for address in IP.get_local_addresses():
|
|
if address.begins_with("192"):
|
|
if address.ends_with("0.1"):
|
|
continue
|
|
ip_address = address
|
|
break
|
|
|
|
func _on_sensor_connected(sensor_ip, sensor_data):
|
|
current_broadcast_rate = slow_broadcast_rate
|