You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
975 B
GDScript

extends Node
signal mouse_pos_received(x: float, y: float)
@export var port_name: String = "/dev/cu.usbmodem2101"
@export var baud_rate: int = 9600
@onready var serial = $GDSerial
func _ready():
var error = serial.open(port_name, baud_rate)
if error != OK:
print("fuck it ...", error)
else:
print("open bar !")
func _process(_delta):
if serial.is_open() and serial.bytes_available() > 0:
var response = serial.readline()
if not response.is_empty():
_parse_and_emit(response)
func _parse_and_emit(response: String):
var clean_response = response.strip_edges()
var parts = clean_response.split(",") # Ex: ["X:100", "Y:200"]
var x = 0.0
var y = 0.0
for part in parts:
var key_value = part.split(":")
if key_value.size() == 2:
var key = key_value[0].strip_edges() # Ex: "X"
var value = float(key_value[1].strip_edges()) # Ex: 100.0
if key == "X":
x = value
elif key == "Y":
y = value
mouse_pos_received.emit(x, y)