49 lines
1.4 KiB
GDScript
49 lines
1.4 KiB
GDScript
class_name SonarCaptureRequest
|
|
extends RefCounted
|
|
|
|
var scan_id: StringName
|
|
var session_id: StringName
|
|
var sensor_transform: Transform3D
|
|
var minimum_range_m: float
|
|
var maximum_range_m: float
|
|
var horizontal_opening_radians: float
|
|
var vertical_opening_radians: float
|
|
var columns: int
|
|
var rows: int
|
|
|
|
|
|
func _init(
|
|
p_scan_id: StringName,
|
|
p_session_id: StringName,
|
|
p_sensor_transform: Transform3D,
|
|
p_minimum_range_m: float,
|
|
p_maximum_range_m: float,
|
|
p_horizontal_opening_radians: float,
|
|
p_vertical_opening_radians: float,
|
|
p_columns: int,
|
|
p_rows: int
|
|
) -> void:
|
|
scan_id = p_scan_id
|
|
session_id = p_session_id
|
|
sensor_transform = p_sensor_transform
|
|
minimum_range_m = p_minimum_range_m
|
|
maximum_range_m = p_maximum_range_m
|
|
horizontal_opening_radians = p_horizontal_opening_radians
|
|
vertical_opening_radians = p_vertical_opening_radians
|
|
columns = p_columns
|
|
rows = p_rows
|
|
|
|
|
|
func validation_error() -> String:
|
|
if scan_id.is_empty() or session_id.is_empty():
|
|
return "sonar capture identifiers must not be empty"
|
|
if minimum_range_m < 0.0 or maximum_range_m <= minimum_range_m:
|
|
return "sonar capture range is invalid"
|
|
if horizontal_opening_radians <= 0.0 or horizontal_opening_radians >= PI:
|
|
return "sonar capture horizontal opening is invalid"
|
|
if vertical_opening_radians <= 0.0 or vertical_opening_radians >= PI:
|
|
return "sonar capture vertical opening is invalid"
|
|
if columns < 2 or rows < 2:
|
|
return "sonar capture dimensions must be at least 2 by 2"
|
|
return ""
|