Add production bathymetric sonar slice

This commit is contained in:
chindit committed 2026-10-02 15:52:11 +02:00
1 parent a18e82eb44
commit 7613daee84
28 files changed
+1825 -87

No files matched your search

+39
View File
@@ -0,0 +1,39 @@
class_name SonarContact
extends RefCounted
const SonarMaterial = preload("res://game/domain/sonar/sonar_material.gd")
var contact_id: StringName
var material: SonarMaterial.Value
var center_m: Vector3
var bounds: AABB
var maximum_intensity: float
var sample_count: int
func _init(
p_contact_id: StringName,
p_material: SonarMaterial.Value,
p_center_m: Vector3,
p_bounds: AABB,
p_maximum_intensity: float,
p_sample_count: int
) -> void:
contact_id = p_contact_id
material = p_material
center_m = p_center_m
bounds = p_bounds
maximum_intensity = p_maximum_intensity
sample_count = p_sample_count
func validation_error() -> String:
if contact_id.is_empty():
return "sonar contact id is empty"
if material == SonarMaterial.Value.UNKNOWN or not SonarMaterial.is_valid(material):
return "sonar contact material is invalid"
if sample_count <= 0:
return "sonar contact sample count must be positive"
if not is_finite(maximum_intensity) or maximum_intensity < 0.0 or maximum_intensity > 1.0:
return "sonar contact intensity must be between 0 and 1"
return ""