From 05512c0da2ef8f71a1b241028d25ce73fba2da7a Mon Sep 17 00:00:00 2001 From: lucastucious Date: Mon, 24 Mar 2025 16:01:39 +0100 Subject: [PATCH] New Dawn --- .editorconfig | 4 + .gitattributes | 2 + .gitignore | 3 + Ocean/OceanTile.gdshader | 50 +++ Ocean/OceanTile.gdshader.uid | 1 + Ocean/OceanTile_PlaneMesh.tres | 20 + Ocean/oceanTile.gd | 16 + Ocean/oceanTile.gd.uid | 1 + buyancy_probe.gd | 82 +++++ buyancy_probe.gd.uid | 1 + icon.svg | 1 + icon.svg.import | 37 ++ ocean.gd | 24 ++ ocean.gd.uid | 1 + project.godot | 16 + world.tscn | 647 +++++++++++++++++++++++++++++++++ 16 files changed, 906 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 Ocean/OceanTile.gdshader create mode 100644 Ocean/OceanTile.gdshader.uid create mode 100644 Ocean/OceanTile_PlaneMesh.tres create mode 100644 Ocean/oceanTile.gd create mode 100644 Ocean/oceanTile.gd.uid create mode 100644 buyancy_probe.gd create mode 100644 buyancy_probe.gd.uid create mode 100644 icon.svg create mode 100644 icon.svg.import create mode 100644 ocean.gd create mode 100644 ocean.gd.uid create mode 100644 project.godot create mode 100644 world.tscn diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..f28239b --- /dev/null +++ b/.editorconfig @@ -0,0 +1,4 @@ +root = true + +[*] +charset = utf-8 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8ad74f7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0af181c --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +# Godot 4+ specific ignores +.godot/ +/android/ diff --git a/Ocean/OceanTile.gdshader b/Ocean/OceanTile.gdshader new file mode 100644 index 0000000..32b33be --- /dev/null +++ b/Ocean/OceanTile.gdshader @@ -0,0 +1,50 @@ +shader_type spatial; +render_mode unshaded, cull_back, depth_draw_opaque; + +// Wave parameters: wave.xy is direction, wave.z is steepness, wave.w is wavelength. +uniform vec4 color:source_color = vec4(0.13, 0.31, 0.53, 0.95); +uniform vec4 wave = vec4(1.0, 0.0, 0.5, 10.0); +uniform float wave_speed : hint_range(0.0, 5.0) = 1.0; +uniform float gravity : hint_range(0.0, 20.0) = 9.8; +uniform float wave_time; + + +vec3 gerstnerWave(vec3 p, out vec3 tangent, out vec3 binormal) { + float steepness = wave.z; + float wavelength = wave.w; + float k = 2.0 * PI / wavelength; + float c = sqrt(gravity / k); + vec2 d = normalize(wave.xy); + float f = k * ( dot(d, p.xz) - c * wave_time * wave_speed ); + float a = steepness / k; + + // Update tangent and binormal for lighting or other effects. + tangent = vec3( + -d.x * d.x * (steepness * sin(f)), + d.x * (steepness * cos(f)), + -d.x * d.y * (steepness * sin(f)) + ); + binormal = vec3( + -d.x * d.y * (steepness * sin(f)), + d.y * (steepness * cos(f)), + -d.y * d.y * (steepness * sin(f)) + ); + + return vec3( + d.x * (a * cos(f)), + a * sin(f), + d.y * (a * cos(f)) + ); +} + +void vertex() { + vec3 tangent; + vec3 binormal; + vec3 disp = gerstnerWave(VERTEX, tangent, binormal); + VERTEX.xyz += disp; +} + +void fragment() { + ALBEDO = color.rgb; + ALPHA = color.a; +} \ No newline at end of file diff --git a/Ocean/OceanTile.gdshader.uid b/Ocean/OceanTile.gdshader.uid new file mode 100644 index 0000000..db0a1f8 --- /dev/null +++ b/Ocean/OceanTile.gdshader.uid @@ -0,0 +1 @@ +uid://ts0b536y5vcd diff --git a/Ocean/OceanTile_PlaneMesh.tres b/Ocean/OceanTile_PlaneMesh.tres new file mode 100644 index 0000000..3759887 --- /dev/null +++ b/Ocean/OceanTile_PlaneMesh.tres @@ -0,0 +1,20 @@ +[gd_resource type="PlaneMesh" load_steps=3 format=3 uid="uid://wes0mbjy8mno"] + +[ext_resource type="Shader" uid="uid://ts0b536y5vcd" path="res://Ocean/OceanTile.gdshader" id="1_52gxv"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_fj7yv"] +resource_name = "OceanTileShader" +render_priority = 0 +shader = ExtResource("1_52gxv") +shader_parameter/color = Color(0.13, 0.31, 0.53, 0.73) +shader_parameter/wave = Vector4(1, 0, 0.5, 10) +shader_parameter/wave_speed = 1.0 +shader_parameter/gravity = 9.8 +shader_parameter/wave_time = 12.115 + +[resource] +resource_name = "OceanTile_Main" +material = SubResource("ShaderMaterial_fj7yv") +size = Vector2(10.5, 10.5) +subdivide_width = 201 +subdivide_depth = 201 diff --git a/Ocean/oceanTile.gd b/Ocean/oceanTile.gd new file mode 100644 index 0000000..fb274a1 --- /dev/null +++ b/Ocean/oceanTile.gd @@ -0,0 +1,16 @@ +extends MeshInstance3D +class_name OceanTile + +var time:float + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + time += delta + var mat : ShaderMaterial = mesh.surface_get_material(0) + mat.set_shader_parameter("wave_time",time) + pass diff --git a/Ocean/oceanTile.gd.uid b/Ocean/oceanTile.gd.uid new file mode 100644 index 0000000..f5c7a87 --- /dev/null +++ b/Ocean/oceanTile.gd.uid @@ -0,0 +1 @@ +uid://62f04keairkf diff --git a/buyancy_probe.gd b/buyancy_probe.gd new file mode 100644 index 0000000..b24790e --- /dev/null +++ b/buyancy_probe.gd @@ -0,0 +1,82 @@ +extends Node3D +class_name BuyancyProbe + +## How much force is applied upward +@export var float_strenght: float = 10.0 + +@export_category("Debug") +@export var show_probe :bool = false +var sphere_preview:MeshInstance3D +@onready var debug_sphere:SphereMesh = SphereMesh.new() + +@export_category("Wave") +# Wave parameters (should match the shader). +# For a single wave, we used these parameters. +@export var wave_amplitude: float = 1.0 +@export var wave_length: float = 10.0 +@export var wave_speed: float = 1.0 +@export var wave_direction: Vector2 = Vector2(1.0, 0.0) +@export var wave:Vector4 +@onready var ocean_mat: ShaderMaterial = preload("uid://wes0mbjy8mno").surface_get_material(0) +@onready var gravity: float = ProjectSettings.get_setting("physics/3d/default_gravity") +@onready var OceanNode:Ocean = get_tree().get_first_node_in_group("Ocean") +# For multiple waves, define an array of waves. +@export var waves: Array[Vector4] = [ + Vector4(1.0, 0.0, 0.5, 10.0), + Vector4(0.0, 1.0, 0.25, 20.0), + Vector4(1.0, 1.0, 0.15, 10.0) +] + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + if ocean_mat != null: + wave = ocean_mat.get_shader_parameter("wave") + wave_speed = ocean_mat.get_shader_parameter("wave_speed") + + if show_probe: + sphere_preview = MeshInstance3D.new() + sphere_preview.set_name("Sphere") + add_child(sphere_preview) + debug_sphere.radius = 0.1 + debug_sphere.height = 0.2 + sphere_preview.mesh = debug_sphere + + +var Oceantime:float +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + if OceanNode != null: + Oceantime = OceanNode.time + if show_probe && sphere_preview != null: + sphere_preview.global_position.y = get_gerstner_wave(global_position,wave,Oceantime).y + #print(get_gerstner_wave(global_position,wave,Oceantime).y) + +# Calculate the wave height using a sine function. +func get_wave_height(position: Vector3, time: float) -> float: + var frequency = (2.0 * PI) / wave_length + var phase = frequency * (wave_direction.dot(Vector2(position.x, position.z))) + time * wave_speed + return wave_amplitude * sin(phase) + +# Approximate the wave's normal based on the derivative of the wave function. +func get_wave_normal(position: Vector3, time: float) -> Vector3: + var frequency = (2.0 * PI) / wave_length + var phase = frequency * (wave_direction.dot(Vector2(global_position.x, global_position.z))) + time * wave_speed + var dHeight_dx = wave_amplitude * cos(phase) * frequency * wave_direction.x + var dHeight_dz = wave_amplitude * cos(phase) * frequency * wave_direction.y + var normal = Vector3(-dHeight_dx, 1.0, -dHeight_dz).normalized() + return normal + +func get_gerstner_wave(p: Vector3, wave: Vector4, time: float) -> Vector3: + var steepness = wave.z + var wavelength = wave.w + var k = 2 * PI / wavelength + var c = sqrt(gravity / k) # Wave speed factor (gravity-based) + var d = Vector2(wave.x, wave.y).normalized() + var f = k * ( d.dot(Vector2(p.x, p.z)) - c * time * wave_speed ) + var a = steepness / k + # Return the displacement vector. + return Vector3( + d.x * (a * cos(f)), + a * sin(f), + d.y * (a * cos(f)) + ) diff --git a/buyancy_probe.gd.uid b/buyancy_probe.gd.uid new file mode 100644 index 0000000..9290baf --- /dev/null +++ b/buyancy_probe.gd.uid @@ -0,0 +1 @@ +uid://cnfkxclrq0i0s diff --git a/icon.svg b/icon.svg new file mode 100644 index 0000000..9d8b7fa --- /dev/null +++ b/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icon.svg.import b/icon.svg.import new file mode 100644 index 0000000..b5fa423 --- /dev/null +++ b/icon.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cafpmf6v746fm" +path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.svg" +dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/ocean.gd b/ocean.gd new file mode 100644 index 0000000..5bfc681 --- /dev/null +++ b/ocean.gd @@ -0,0 +1,24 @@ +@tool +extends Node3D +class_name Ocean + +@onready var OceanTileMesh:PlaneMesh = preload("uid://wes0mbjy8mno") +@onready var gravity: float = ProjectSettings.get_setting("physics/3d/default_gravity") +var time:float +@export_tool_button("Generate Tiles","Ocean") var generate_tile_action = generate_tile + +func generate_tile(): + for i in range(8): + var NewTile = OceanTile.new() + add_child(NewTile) + +func _ready() -> void: + if not Engine.is_editor_hint(): + add_to_group("Ocean") + if OceanTileMesh != null: + OceanTileMesh.surface_get_material(0).set_shader_parameter("wave_time",0.0) + +func _process(delta): + if OceanTileMesh != null: + time += delta + OceanTileMesh.surface_get_material(0).set_shader_parameter("wave_time",time) diff --git a/ocean.gd.uid b/ocean.gd.uid new file mode 100644 index 0000000..d75ce14 --- /dev/null +++ b/ocean.gd.uid @@ -0,0 +1 @@ +uid://cdnrxp6nu1wor diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..358c92d --- /dev/null +++ b/project.godot @@ -0,0 +1,16 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="ChatBoat" +run/main_scene="uid://bwdtb8qfox3nq" +config/features=PackedStringArray("4.4", "Forward Plus") +config/icon="res://icon.svg" diff --git a/world.tscn b/world.tscn new file mode 100644 index 0000000..b130c89 --- /dev/null +++ b/world.tscn @@ -0,0 +1,647 @@ +[gd_scene load_steps=11 format=3 uid="uid://bwdtb8qfox3nq"] + +[ext_resource type="Script" uid="uid://cdnrxp6nu1wor" path="res://ocean.gd" id="1_aqk2v"] +[ext_resource type="Script" uid="uid://cnfkxclrq0i0s" path="res://buyancy_probe.gd" id="2_fj7yv"] +[ext_resource type="PlaneMesh" uid="uid://wes0mbjy8mno" path="res://Ocean/OceanTile_PlaneMesh.tres" id="2_tlwt5"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_aqk2v"] +sky_top_color = Color(0.191699, 0.357914, 1, 1) +sky_horizon_color = Color(0.549485, 0.583289, 0.73481, 1) +ground_horizon_color = Color(0.549485, 0.583289, 0.73481, 1) + +[sub_resource type="Sky" id="Sky_036b0"] +sky_material = SubResource("ProceduralSkyMaterial_aqk2v") + +[sub_resource type="Environment" id="Environment_dwbse"] +background_mode = 2 +sky = SubResource("Sky_036b0") +tonemap_mode = 2 +ssao_enabled = true +sdfgi_enabled = true +glow_enabled = true + +[sub_resource type="BoxShape3D" id="BoxShape3D_f3sb7"] +resource_name = "BoatShape" +size = Vector3(3, 0.5, 1) + +[sub_resource type="BoxMesh" id="BoxMesh_fj7yv"] +size = Vector3(3, 0.5, 1) + +[sub_resource type="BoxShape3D" id="BoxShape3D_tlwt5"] +size = Vector3(0.5, 0.5, 0.5) + +[sub_resource type="BoxMesh" id="BoxMesh_aqk2v"] +size = Vector3(0.5, 0.5, 0.5) + +[node name="World" type="Node3D"] + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_dwbse") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(-0.866023, -0.433016, 0.250001, 0, 0.499998, 0.866027, -0.500003, 0.749999, -0.43301, 0, 0, 0) +shadow_enabled = true + +[node name="Ocean" type="Node3D" parent="."] +script = ExtResource("1_aqk2v") + +[node name="OceanTile00" type="MeshInstance3D" parent="Ocean"] +mesh = ExtResource("2_tlwt5") + +[node name="OceanTile01" type="MeshInstance3D" parent="Ocean"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 0) +mesh = ExtResource("2_tlwt5") + +[node name="OceanTile02" type="MeshInstance3D" parent="Ocean"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, 0) +mesh = ExtResource("2_tlwt5") + +[node name="OceanTile03" type="MeshInstance3D" parent="Ocean"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 10) +mesh = ExtResource("2_tlwt5") + +[node name="OceanTile04" type="MeshInstance3D" parent="Ocean"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -10) +mesh = ExtResource("2_tlwt5") + +[node name="OceanTile05" type="MeshInstance3D" parent="Ocean"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, -10) +mesh = ExtResource("2_tlwt5") + +[node name="OceanTile06" type="MeshInstance3D" parent="Ocean"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, -10) +mesh = ExtResource("2_tlwt5") + +[node name="OceanTile07" type="MeshInstance3D" parent="Ocean"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 10) +mesh = ExtResource("2_tlwt5") + +[node name="OceanTile08" type="MeshInstance3D" parent="Ocean"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, 10) +mesh = ExtResource("2_tlwt5") + +[node name="Boat" type="RigidBody3D" parent="."] +mass = 5.0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Boat"] +shape = SubResource("BoxShape3D_f3sb7") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="Boat"] +mesh = SubResource("BoxMesh_fj7yv") + +[node name="ProbeContainer" type="Node3D" parent="Boat"] + +[node name="BuyancyProbe00" type="Node3D" parent="Boat/ProbeContainer"] +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe01" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.03702, -2.38419e-07, 1.60053) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe02" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.47019, -2.38419e-07, -9.91773) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe03" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12.9884, -2.38419e-07, 0.339097) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe04" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.633354, 0, 0.773862, 0, 1, 0, -0.773862, 0, 0.633354, 1.3197, 0, 0.307577) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe05" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.633354, 0, 0.773862, 0, 1, 0, -0.773862, 0, 0.633354, 8.28192, -2.38419e-07, -5.67213) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe06" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.633354, 0, 0.773862, 0, 1, 0, -0.773862, 0, 0.633354, -7.28641, -2.38419e-07, -4.83613) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe07" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.633354, 0, 0.773862, 0, 1, 0, -0.773862, 0, 0.633354, -6.64414, -2.38419e-07, 10.5736) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe08" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.992158, 0, -0.124987, 0, 1, 0, 0.124987, 0, 0.992158, -1.25281, 0, 10.8711) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe09" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.992158, 0, -0.124987, 0, 1, 0, 0.124987, 0, 0.992158, 7.5133, -2.38419e-07, 13.5886) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe10" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.992158, 0, -0.124987, 0, 1, 0, 0.124987, 0, 0.992158, -1.47188, -2.38419e-07, 0.847415) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe11" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.992158, 0, -0.124987, 0, 1, 0, 0.124987, 0, 0.992158, -14.1817, -2.38419e-07, 9.58419) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe12" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.925673, 0, -0.378326, 0, 1, 0, 0.378326, 0, 0.925673, 0.741679, 0, 0.772553) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe13" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.925673, 0, -0.378326, 0, 1, 0, 0.378326, 0, 0.925673, 8.50148, -2.38419e-07, 5.67305) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe14" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.925673, 0, -0.378326, 0, 1, 0, 0.378326, 0, 0.925673, 3.13289, -2.38419e-07, -8.96423) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe15" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.925673, 0, -0.378326, 0, 1, 0, 0.378326, 0, 0.925673, -11.4096, -2.38419e-07, -3.8274) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe16" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.87905, 0, 0.476729, 0, 1, 0, -0.476729, 0, 0.87905, 1.84692, 0, 1.55654) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe17" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.87905, 0, 0.476729, 0, 1, 0, -0.476729, 0, 0.87905, 10.5539, -2.38419e-07, -1.34472) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe18" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.87905, 0, 0.476729, 0, 1, 0, -0.476729, 0, 0.87905, -4.17352, -2.38419e-07, -6.46076) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe19" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.87905, 0, 0.476729, 0, 1, 0, -0.476729, 0, 0.87905, -9.40888, -2.38419e-07, 8.04658) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe20" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.871128, 0, -0.491056, 0, 1, 0, 0.491056, 0, 0.871128, -4.53084, 0, 10.3617) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe21" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.871128, 0, -0.491056, 0, 1, 0, 0.491056, 0, 0.871128, 2.55561, -2.38419e-07, 16.1936) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe22" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.871128, 0, -0.491056, 0, 1, 0, 0.491056, 0, 0.871128, -0.941402, -2.38419e-07, 1.00013) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe23" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.871128, 0, -0.491056, 0, 1, 0, 0.491056, 0, 0.871128, -16.0119, -2.38419e-07, 4.27906) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe24" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.553188, 0, -0.833056, 0, 1, 0, 0.833056, 0, -0.553188, -0.583566, 0, 4.86069) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe25" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.553188, 0, -0.833056, 0, 1, 0, 0.833056, 0, -0.553188, -6.91607, -2.38419e-07, 11.5036) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe26" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.553188, 0, -0.833056, 0, 1, 0, 0.833056, 0, -0.553188, 8.49176, -2.38419e-07, 9.1223) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe27" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.553188, 0, -0.833056, 0, 1, 0, 0.833056, 0, -0.553188, 6.31897, -2.38419e-07, -6.14697) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe28" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.294307, 0, -0.955711, 0, 1, 0, 0.955711, 0, 0.294307, -1.56984, 0, 5.78992) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe29" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.294307, 0, -0.955711, 0, 1, 0, 0.955711, 0, 0.294307, -0.439818, -2.38419e-07, 14.8977) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe30" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.294307, 0, -0.955711, 0, 1, 0, 0.955711, 0, 0.294307, 7.47596, -2.38419e-07, 1.46598) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe31" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.294307, 0, -0.955711, 0, 1, 0, 0.955711, 0, 0.294307, -5.7165, -2.38419e-07, -6.52344) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe32" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.652971, 0, -0.757383, 0, 1, 0, 0.757383, 0, -0.652971, -8.94679, 0, -2.19675) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe33" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.652971, 0, -0.757383, 0, 1, 0, 0.757383, 0, -0.652971, -16.0599, -2.38419e-07, 3.60263) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe34" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.652971, 0, -0.757383, 0, 1, 0, 0.757383, 0, -0.652971, -0.475282, -2.38419e-07, 3.16574) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe35" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.652971, 0, -0.757383, 0, 1, 0, 0.757383, 0, -0.652971, -0.722564, -2.38419e-07, -12.2554) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe36" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.0722982, 0, -0.997383, 0, 1, 0, 0.997383, 0, 0.0722982, 2.36634, 4.76837e-07, 5.62094) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe37" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.0722982, 0, -0.997383, 0, 1, 0, 0.997383, 0, 0.0722982, 1.42336, 2.38418e-07, 14.75) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe38" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.0722982, 0, -0.997383, 0, 1, 0, 0.997383, 0, 0.0722982, 12.1518, 2.38418e-07, 3.43757) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe39" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.0722982, 0, -0.997383, 0, 1, 0, 0.997383, 0, 0.0722982, 1.0891, 2.38418e-07, -7.30895) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe40" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.817627, 0, -0.575748, 0, 1, 0, 0.575748, 0, 0.817627, 2.15498, 4.76837e-07, 6.95942) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe41" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.817627, 0, -0.575748, 0, 1, 0, 0.575748, 0, 0.817627, 8.6224, 2.38418e-07, 13.4711) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe42" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.817627, 0, -0.575748, 0, 1, 0, 0.575748, 0, 0.817627, 6.66302, 2.38418e-07, -1.99604) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe43" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.817627, 0, -0.575748, 0, 1, 0, 0.575748, 0, 0.817627, -8.65993, 2.38418e-07, -0.24136) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe44" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.0529286, 0, -0.998598, 0, 1, 0, 0.998598, 0, -0.0529286, -8.56691, 4.76837e-07, 5.15738) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe45" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.0529286, 0, -0.998598, 0, 1, 0, 0.998598, 0, -0.0529286, -10.6435, 2.38418e-07, 14.097) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe46" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.0529286, 0, -0.998598, 0, 1, 0, 0.998598, 0, -0.0529286, 1.41473, 2.38418e-07, 4.21418) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe47" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.0529286, 0, -0.998598, 0, 1, 0, 0.998598, 0, -0.0529286, -8.21808, 2.38418e-07, -7.83077) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe48" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.310411, 0, -0.950602, 0, 1, 0, 0.950602, 0, -0.310411, 1.64943, 4.76837e-07, 6.41654) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe49" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.310411, 0, -0.950602, 0, 1, 0, 0.950602, 0, -0.310411, -2.67722, 2.38418e-07, 14.5103) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe50" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.310411, 0, -0.950602, 0, 1, 0, 0.950602, 0, -0.310411, 11.5336, 2.38418e-07, 8.09754) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe51" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.310411, 0, -0.950602, 0, 1, 0, 0.950602, 0, -0.310411, 5.35883, 2.38418e-07, -6.03553) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe52" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.539035, 0, -0.842283, 0, 1, 0, 0.842283, 0, 0.539035, 0.947401, 4.76837e-07, 7.57557) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe53" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.539035, 0, -0.842283, 0, 1, 0, 0.842283, 0, 0.539035, 4.47058, 2.38418e-07, 16.05) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe54" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.539035, 0, -0.842283, 0, 1, 0, 0.842283, 0, 0.539035, 8.50845, 2.38418e-07, 0.991245) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe55" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.539035, 0, -0.842283, 0, 1, 0, 0.842283, 0, 0.539035, -6.33942, 2.38418e-07, -3.18156) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe56" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.42679, 0, -0.904351, 0, 1, 0, 0.904351, 0, -0.42679, -8.2958, 4.76837e-07, 1.8511) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe57" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.42679, 0, -0.904351, 0, 1, 0, 0.904351, 0, -0.42679, -13.6002, 2.38418e-07, 9.34064) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe58" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.42679, 0, -0.904351, 0, 1, 0, 0.904351, 0, -0.42679, 1.30077, 2.38418e-07, 4.75431) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe59" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.42679, 0, -0.904351, 0, 1, 0, 0.904351, 0, -0.42679, -3.05915, 2.38418e-07, -10.0397) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe60" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.870871, 0, 0.491512, 0, 1, 0, -0.491512, 0, -0.870871, -2.52382, 4.76837e-07, 5.39032) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe61" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.870871, 0, 0.491512, 0, 1, 0, -0.491512, 0, -0.870871, -9.60721, 2.38418e-07, -0.445332) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe62" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.870871, 0, 0.491512, 0, 1, 0, -0.491512, 0, -0.870871, -6.11815, 2.38418e-07, 14.75) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe63" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.870871, 0, 0.491512, 0, 1, 0, -0.491512, 0, -0.870871, 8.95408, 2.38418e-07, 11.479) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe64" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.931932, 0, -0.362633, 0, 1, 0, 0.362633, 0, -0.931932, -3.52192, 4.76837e-07, 4.47382) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe65" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.931932, 0, -0.362633, 0, 1, 0, 0.362633, 0, -0.931932, -12.5242, 2.38418e-07, 6.25936) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe66" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.931932, 0, -0.362633, 0, 1, 0, 0.362633, 0, -0.931932, 1.44469, 2.38418e-07, 13.1833) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe67" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.931932, 0, -0.362633, 0, 1, 0, 0.362633, 0, -0.931932, 8.45941, 2.38418e-07, -0.552224) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe68" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.802609, 0, 0.596505, 0, 1, 0, -0.596505, 0, -0.802609, 3.91051, 4.76837e-07, -3.46125) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe69" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.802609, 0, 0.596505, 0, 1, 0, -0.596505, 0, -0.802609, -2.38796, 2.38418e-07, -10.1365) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe70" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.802609, 0, 0.596505, 0, 1, 0, -0.596505, 0, -0.802609, -0.82548, 2.38418e-07, 5.37578) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe71" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.802609, 0, 0.596505, 0, 1, 0, -0.596505, 0, -0.802609, 14.5374, 2.38418e-07, 4.01423) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe72" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.940958, 0, -0.338524, 0, 1, 0, 0.338524, 0, -0.940958, -0.748251, 4.76837e-07, 6.87385) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe73" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.940958, 0, -0.338524, 0, 1, 0, 0.338524, 0, -0.940958, -9.79352, 2.38418e-07, 8.42707) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe74" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.940958, 0, -0.338524, 0, 1, 0, 0.338524, 0, -0.940958, 3.99253, 2.38418e-07, 15.7083) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe75" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.940958, 0, -0.338524, 0, 1, 0, 0.338524, 0, -0.940958, 11.3585, 2.38418e-07, 2.15788) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe76" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.333988, 0, -0.942577, 0, 1, 0, 0.942577, 0, -0.333988, -2.09415, 4.76837e-07, 7.03118) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe77" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.333988, 0, -0.942577, 0, 1, 0, 0.942577, 0, -0.333988, -6.62103, 2.38418e-07, 15.0147) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe78" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.333988, 0, -0.942577, 0, 1, 0, 0.942577, 0, -0.333988, 7.7451, 2.38418e-07, 8.95782) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe79" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.333988, 0, -0.942577, 0, 1, 0, 0.942577, 0, -0.333988, 1.92419, 2.38418e-07, -5.32464) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe80" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.97589, 0, -0.218262, 0, 1, 0, 0.218262, 0, -0.97589, -3.24955, 4.76837e-07, -3.77953) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe81" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.97589, 0, -0.218262, 0, 1, 0, 0.218262, 0, -0.97589, -12.418, 2.38418e-07, -3.36903) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe82" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.97589, 0, -0.218262, 0, 1, 0, 0.218262, 0, -0.97589, 0.349858, 2.38418e-07, 5.5782) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe83" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.97589, 0, -0.218262, 0, 1, 0, 0.218262, 0, -0.97589, 9.35169, 2.38418e-07, -6.94533) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe84" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.999091, 0, 0.0426255, 0, 1, 0, -0.0426255, 0, -0.999091, -1.70767, 4.76837e-07, 6.39799) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe85" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.999091, 0, 0.0426255, 0, 1, 0, -0.0426255, 0, -0.999091, -10.6683, 2.38418e-07, 4.41371) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe86" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.999091, 0, 0.0426255, 0, 1, 0, -0.0426255, 0, -0.999091, -0.661562, 2.38418e-07, 16.3694) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe87" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.999091, 0, 0.0426255, 0, 1, 0, -0.0426255, 0, -0.999091, 11.2834, 2.38418e-07, 6.61284) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe88" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.665764, 0, -0.746162, 0, 1, 0, 0.746162, 0, -0.665764, -3.01305, 4.76837e-07, 6.03444) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe89" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.665764, 0, -0.746162, 0, 1, 0, 0.746162, 0, -0.665764, -10.2238, 2.38418e-07, 11.7119) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe90" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.665764, 0, -0.746162, 0, 1, 0, 0.746162, 0, -0.665764, 5.36598, 2.38418e-07, 11.5403) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe91" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.665764, 0, -0.746162, 0, 1, 0, 0.746162, 0, -0.665764, 5.38114, 2.38418e-07, -3.88277) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe92" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.985929, 0, 0.167165, 0, 1, 0, -0.167165, 0, -0.985929, 0.0073901, 4.76837e-07, -4.40986) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe93" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.985929, 0, 0.167165, 0, 1, 0, -0.167165, 0, -0.985929, -8.63492, 2.38418e-07, -7.49854) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe94" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.985929, 0, 0.167165, 0, 1, 0, -0.167165, 0, -0.985929, -0.201001, 2.38418e-07, 5.61408) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe95" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.985929, 0, 0.167165, 0, 1, 0, -0.167165, 0, -0.985929, 12.8697, 2.38418e-07, -2.57299) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe96" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.238516, 0, 0.971138, 0, 1, 0, -0.971138, 0, 0.238516, -1.8446, 4.76837e-07, 2.1026) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe97" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.238516, 0, 0.971138, 0, 1, 0, -0.971138, 0, 0.238516, 1.86521, 2.38418e-07, -6.29184) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe98" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.238516, 0, 0.971138, 0, 1, 0, -0.971138, 0, 0.238516, -11.8268, 2.38418e-07, 1.16481) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe99" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.238516, 0, 0.971138, 0, 1, 0, -0.971138, 0, 0.238516, -4.61324, 2.38418e-07, 14.797) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe100" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.600462, 0, 0.799653, 0, 1, 0, -0.799653, 0, -0.600462, -1.23113, 4.76837e-07, 0.894353) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe101" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.600462, 0, 0.799653, 0, 1, 0, -0.799653, 0, -0.600462, -5.37765, 2.38418e-07, -7.29319) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe102" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.600462, 0, 0.799653, 0, 1, 0, -0.799653, 0, -0.600462, -8.27909, 2.38418e-07, 8.02522) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe103" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(-0.600462, 0, 0.799653, 0, 1, 0, -0.799653, 0, -0.600462, 6.83907, 2.38418e-07, 11.077) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe104" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.358026, 0, 0.933712, 0, 1, 0, -0.933712, 0, 0.358026, 8.41395, 4.76837e-07, 5.91219) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe105" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.358026, 0, 0.933712, 0, 1, 0, -0.933712, 0, 0.358026, 13.1439, 2.38418e-07, -1.95275) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe106" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.358026, 0, 0.933712, 0, 1, 0, -0.933712, 0, 0.358026, -1.37271, 2.38418e-07, 3.73412) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="BuyancyProbe107" type="Node3D" parent="Boat/ProbeContainer"] +transform = Transform3D(0.358026, 0, 0.933712, 0, 1, 0, -0.933712, 0, 0.358026, 4.08039, 2.38418e-07, 18.161) +script = ExtResource("2_fj7yv") +show_probe = true + +[node name="Junk" type="RigidBody3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0207567, 1.19209e-07, -3.99773) +mass = 5.0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Junk"] +shape = SubResource("BoxShape3D_tlwt5") + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="Junk"] +mesh = SubResource("BoxMesh_aqk2v") +skeleton = NodePath("../../Boat") + +[node name="BuyancyProbe12" type="Node3D" parent="Junk"] +transform = Transform3D(0.992158, 0, -0.124987, 0, 1, 0, 0.124987, 0, 0.992158, -1.45113, -3.57628e-07, 4.84515) +script = ExtResource("2_fj7yv") +show_probe = true