31 lines
1.1 KiB
GDScript
31 lines
1.1 KiB
GDScript
extends BaseSensorNode
|
|||
|
|
class_name AccelSensorNode
|
||
|
|
|
||
|
|
|
||
|
|
var accel_vector: Vector3 = Vector3.ZERO
|
||
|
|
var linear_accel_vector: Vector3 = Vector3.ZERO
|
||
|
|
var g_accel_vector: Vector3 = Vector3.ZERO
|
||
|
|
|
||
|
|
var DOWN = Vector2(0, -1.)
|
||
|
|
|
||
|
|
|
||
|
|
# Called when the node enters the scene tree for the first time.
|
||
|
|
func _ready() -> void:
|
||
|
|
super._ready()
|
||
|
|
DataSignals.accelerometer_data_received.connect(_on_data_received)
|
||
|
|
|
||
|
|
func _on_data_received(source_ip: String, timestamp_list: Array, accel: Array, linear_accel: Array, g_accel: Array):
|
||
|
|
if source_ip != ip_address:
|
||
|
|
return
|
||
|
|
var msg_timestamp = timestamp_list[0] * 3600 + timestamp_list[1] * 60 + timestamp_list[2] + timestamp_list[3]
|
||
|
|
if not Constants.is_timestamp_newer(timestamp, msg_timestamp):
|
||
|
|
return
|
||
|
|
timestamp = msg_timestamp
|
||
|
|
Signals.linear_acceleration_updated.emit(ip_address, linear_accel)
|
||
|
|
var x_z = Vector2(g_accel[0], g_accel[2]).normalized()
|
||
|
|
var y_z = Vector2(g_accel[1], g_accel[2]).normalized()
|
||
|
|
var pitch = DOWN.angle_to(x_z)
|
||
|
|
var roll = y_z.angle_to(DOWN)
|
||
|
|
SensorSignals.pitch_updated.emit(ip_address, pitch)
|
||
|
|
SensorSignals.roll_updated.emit(ip_address, roll)
|