Files
Ransom-s-wake/game/application/sonar/sonar_capture_request.gd

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 ""