Files
Ransom-s-wake/game/domain/sonar/sonar_contact.gd

40 lines
1.1 KiB
GDScript

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