class_name VehicleTestTerrainRecipe extends RefCounted const SiteTerrainBaker = preload("res://tools/site_terrain_baker.gd") const SiteTerrainData = preload("res://game/domain/sites/site_terrain_data.gd") const TerrainHeightField = preload("res://game/domain/sites/terrain_height_field.gd") const DiveSiteDefinition = preload("res://game/domain/sites/dive_site_definition.gd") const SitePlacement = preload("res://game/domain/sites/site_placement.gd") static func recipe() -> SiteTerrainBaker.Recipe: var result := SiteTerrainBaker.Recipe.new() result.columns = 61 result.rows = 69 result.cell_size_m = 3.0 result.origin_x_m = -90.0 result.origin_z_m = -176.0 result.floor_elevation_m = -95.0 result.rock_slope_degrees = 20.0 result.primitives = [ SiteTerrainBaker.SlopedPlane.new(40.0, 0.0, 0.19, 0.0, 28.0), SiteTerrainBaker.Blob.new(Vector2(-24.0, -48.0), sqrt(210.0), sqrt(980.0), 13.0), SiteTerrainBaker.Blob.new(Vector2(25.0, -58.0), sqrt(250.0), sqrt(1150.0), 15.0), SiteTerrainBaker.Blob.new(Vector2(0.0, -66.0), sqrt(120.0), sqrt(2500.0), -8.5), SiteTerrainBaker.Blob.new(Vector2(-5.0, -125.0), sqrt(900.0), sqrt(620.0), 8.0), SiteTerrainBaker.Ripples.new(Vector2(1.0, 0.0), TAU / 0.075, 0.9, Vector2.ZERO, 0.0), SiteTerrainBaker.Ripples.new(Vector2(0.0, 1.0), TAU / 0.048, 0.9, Vector2.ZERO, 0.0), ] return result static func definition(terrain: SiteTerrainData) -> DiveSiteDefinition: var field := TerrainHeightField.from_data(terrain) var result := DiveSiteDefinition.new() result.site_id = &"vehicle_test" result.display_name = "Site de calibration du véhicule" result.terrain = terrain result.playable_bounds_m = Rect2(-90.0, -176.0, 180.0, 204.0) result.spawn_position_m = Vector3(0.0, -12.0, 12.0) result.spawn_yaw_radians = 0.0 var target := SitePlacement.new() target.placement_id = &"calibration_target" target.kind = SitePlacement.Kind.WRECK_DECOY target.position_m = Vector3(0.0, field.elevation_at(0.0, -58.0) + 2.5, -58.0) target.footprint_m = Vector3(8.0, 5.0, 7.0) var anchor := SitePlacement.new() anchor.placement_id = &"navigation_beacon" anchor.kind = SitePlacement.Kind.VESSEL_ANCHOR anchor.position_m = Vector3(0.0, -15.0, -22.0) result.placements = [target, anchor] return result