Add production bathymetric sonar slice
This commit is contained in:
1 parent
a18e82eb44
commit
7613daee84
28 files changed
+1825
-87
No files matched your search
@@ -0,0 +1,50 @@
|
||||
class_name SonarCaptureSample
|
||||
extends RefCounted
|
||||
|
||||
const SonarMaterial = preload("res://game/domain/sonar/sonar_material.gd")
|
||||
|
||||
var row: int
|
||||
var column: int
|
||||
var position_m: Vector3
|
||||
var normal: Vector3
|
||||
var intensity: float
|
||||
var elevation_m: float
|
||||
var material: SonarMaterial.Value
|
||||
|
||||
|
||||
func _init(
|
||||
p_row: int,
|
||||
p_column: int,
|
||||
p_position_m: Vector3,
|
||||
p_normal: Vector3,
|
||||
p_intensity: float,
|
||||
p_elevation_m: float,
|
||||
p_material: SonarMaterial.Value
|
||||
) -> void:
|
||||
row = p_row
|
||||
column = p_column
|
||||
position_m = p_position_m
|
||||
normal = p_normal
|
||||
intensity = p_intensity
|
||||
elevation_m = p_elevation_m
|
||||
material = p_material
|
||||
|
||||
|
||||
func validation_error(columns: int, rows: int) -> String:
|
||||
if row < 0 or row >= rows or column < 0 or column >= columns:
|
||||
return "sonar capture sample coordinates are invalid"
|
||||
if not _vector_is_finite(position_m) or not _vector_is_finite(normal):
|
||||
return "sonar capture sample vectors are not finite"
|
||||
if normal.length_squared() < 0.25:
|
||||
return "sonar capture sample normal is invalid"
|
||||
if not is_finite(intensity) or intensity < 0.0 or intensity > 1.0:
|
||||
return "sonar capture sample intensity is invalid"
|
||||
if not is_finite(elevation_m):
|
||||
return "sonar capture sample elevation is invalid"
|
||||
if material == SonarMaterial.Value.UNKNOWN or not SonarMaterial.is_valid(material):
|
||||
return "sonar capture sample material is invalid"
|
||||
return ""
|
||||
|
||||
|
||||
func _vector_is_finite(value: Vector3) -> bool:
|
||||
return is_finite(value.x) and is_finite(value.y) and is_finite(value.z)
|
||||
Reference in new issue
Block a user