refacto needed

This commit is contained in:
Lucas 2025-03-24 18:02:15 +01:00
parent b0b9df011e
commit a3cbb44571
No known key found for this signature in database
10 changed files with 187 additions and 25 deletions

11
boat/BuyancyNode.gd Normal file
View file

@ -0,0 +1,11 @@
extends Marker3D
# 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:
pass

1
boat/BuyancyNode.gd.uid Normal file
View file

@ -0,0 +1 @@
uid://dliyvpt05xo5u

View file

@ -14,7 +14,7 @@ var submerged := false
var is_docked: bool = false
@export var ocean : Ocean #= get_tree().get_nodes_in_group("ocean")[0]
@export var ocean : OceanTile
@export var max_thrust_force: float = 2048*3.0
@export var max_steering: float = 50.0
@ -67,15 +67,15 @@ func _integrate_forces(state: PhysicsDirectBodyState3D):
func thrust():
func thrust(_strength:=1.0):
if not is_docked:
thrust_force = max_thrust_force
func steer_right():
func steer_right(_strength:=1.0):
if not is_docked:
steering = -PI * max_steering
func steer_left():
func steer_left(_strength:=1.0):
if not is_docked:
steering = PI * max_steering

View file

@ -1,7 +1,8 @@
[gd_scene load_steps=10 format=3 uid="uid://babgqvkugifk1"]
[gd_scene load_steps=12 format=3 uid="uid://babgqvkugifk1"]
[ext_resource type="Script" uid="uid://du135dtrpwm7o" path="res://boat/WalkableBoat.gd" id="1_ml88t"]
[ext_resource type="PackedScene" uid="uid://bcdjvsj0la72h" path="res://boat/source/untitled.fbx" id="2_enlnh"]
[ext_resource type="Script" uid="uid://dliyvpt05xo5u" path="res://boat/BuyancyNode.gd" id="3_ml88t"]
[sub_resource type="GDScript" id="GDScript_enlnh"]
resource_name = "NoRotation"
@ -14,7 +15,7 @@ func _process(_delta):
[sub_resource type="Curve" id="Curve_enlnh"]
_limits = [0.0, 10.0, 0.0, 5.0]
_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(2.83988, 10), 0.299357, 0.0, 0, 0]
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(2.83988, 10), 0.299357, 0.0, 0, 0]
point_count = 2
[sub_resource type="CurveTexture" id="CurveTexture_ml88t"]
@ -26,6 +27,7 @@ emission_shape = 1
emission_sphere_radius = 2.42
angle_min = -63.4
angle_max = 360.0
inherit_velocity_ratio = 1.384
spread = 21.0
initial_velocity_max = 1.0
angular_velocity_min = -144.39
@ -36,7 +38,24 @@ scale_curve = SubResource("CurveTexture_ml88t")
scale_over_velocity_max = 5.0
color = Color(1, 1, 1, 0.219608)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ml88t"]
transparency = 1
blend_mode = 1
depth_draw_mode = 1
diffuse_mode = 3
specular_mode = 2
disable_ambient_light = true
disable_fog = true
heightmap_scale = 9.055
billboard_mode = 3
billboard_keep_scale = true
particles_anim_h_frames = 1
particles_anim_v_frames = 1
particles_anim_loop = false
point_size = 8.0
[sub_resource type="SphereMesh" id="SphereMesh_ml88t"]
material = SubResource("StandardMaterial3D_ml88t")
radius = 0.08
height = 0.15
radial_segments = 4
@ -57,26 +76,26 @@ water_drag = 0.01
max_thrust_force = 2000.0
max_steering = 250.0
[node name="untitled" parent="." instance=ExtResource("2_enlnh")]
[node name="Model" parent="." instance=ExtResource("2_enlnh")]
transform = Transform3D(-0.1, 0, -1.50996e-08, 0, 0.1, 0, 1.50996e-08, 0, -0.1, 0, 0.260904, 0)
[node name="Node3D" type="Node3D" parent="untitled"]
[node name="CamRoot" type="Node3D" parent="Model"]
transform = Transform3D(-10, 0, 1.50996e-06, 0, 10, 0, -1.50996e-06, 0, -10, 0, 0, 0)
script = SubResource("GDScript_enlnh")
[node name="SpringArm3D" type="SpringArm3D" parent="untitled/Node3D"]
[node name="SpringArm3D" type="SpringArm3D" parent="Model/CamRoot"]
transform = Transform3D(1, 0, 0, 0, 0.893285, 0.449491, 0, -0.449491, 0.893285, 0, 0.350159, 0)
spring_length = 3.5
[node name="Camera3D" type="Camera3D" parent="untitled/Node3D/SpringArm3D"]
[node name="Camera3D" type="Camera3D" parent="Model/CamRoot/SpringArm3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.107117, 0.323316, 2.70191)
[node name="GPUParticles3D" type="GPUParticles3D" parent="untitled"]
[node name="PuffFX" type="GPUParticles3D" parent="Model"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.92513, 10.9874, -0.18139)
transparency = 0.18
amount = 32
lifetime = 7.0
interp_to_end = 0.04
cast_shadow = 0
amount = 64
lifetime = 15.0
interp_to_end = 0.01
speed_scale = 0.8
randomness = 0.4
visibility_aabb = AABB(-4, -2.58, -6.945, 13.755, 23.63, 16.17)
@ -89,6 +108,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.465993, 0)
[node name="Cale3" type="Marker3D" parent="ProbeContainer"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.719583, 0, -0.00873816)
script = ExtResource("3_ml88t")
[node name="MeshInstance3D3" type="MeshInstance3D" parent="ProbeContainer/Cale3"]
mesh = SubResource("SphereMesh_enlnh")

View file

@ -614,6 +614,7 @@ void fragment() {
}
"
graph_offset = Vector2(266.202, -169.806)
modes/diffuse = 3
modes/specular = 1
flags/fog_disabled = true
@ -683,13 +684,13 @@ nodes/fragment/19/position = Vector2(800, 1920)
nodes/fragment/22/node = SubResource("VisualShaderNodeVaryingGetter_obdjg")
nodes/fragment/22/position = Vector2(-1600, 1740)
nodes/fragment/23/node = SubResource("VisualShaderNodeProximityFade_obdjg")
nodes/fragment/23/position = Vector2(-620, 60)
nodes/fragment/23/position = Vector2(-580, 60)
nodes/fragment/24/node = SubResource("VisualShaderNodeFloatFunc_vh75p")
nodes/fragment/24/position = Vector2(-400, 60)
nodes/fragment/26/node = SubResource("VisualShaderNodeFloatFunc_eafem")
nodes/fragment/26/position = Vector2(380, -40)
nodes/fragment/27/node = SubResource("VisualShaderNodeInput_004we")
nodes/fragment/27/position = Vector2(-680, -80)
nodes/fragment/27/position = Vector2(-500, -360)
nodes/fragment/29/node = SubResource("VisualShaderNodeFloatFunc_0o2nh")
nodes/fragment/29/position = Vector2(560, -40)
nodes/fragment/30/node = SubResource("VisualShaderNodeFloatOp_jwewd")
@ -705,7 +706,7 @@ nodes/fragment/35/position = Vector2(200, -80)
nodes/fragment/36/node = SubResource("VisualShaderNodeFloatParameter_gokfr")
nodes/fragment/36/position = Vector2(-500, 180)
nodes/fragment/37/node = SubResource("VisualShaderNodeFloatParameter_5fl1t")
nodes/fragment/37/position = Vector2(-620, -400)
nodes/fragment/37/position = Vector2(-500, -260)
nodes/fragment/38/node = SubResource("VisualShaderNodeMultiplyAdd_tk76b")
nodes/fragment/38/position = Vector2(-80, -100)
nodes/fragment/39/node = SubResource("VisualShaderNodeMix_y7ycs")
@ -727,7 +728,7 @@ nodes/fragment/47/position = Vector2(-720, 2160)
nodes/fragment/48/node = SubResource("VisualShaderNodeInput_ft6xr")
nodes/fragment/48/position = Vector2(-1040, 2420)
nodes/fragment/50/node = SubResource("VisualShaderNodeFloatParameter_obdjg")
nodes/fragment/50/position = Vector2(-960, 80)
nodes/fragment/50/position = Vector2(-860, 60)
nodes/fragment/51/node = SubResource("VisualShaderNodeSwitch_vh75p")
nodes/fragment/51/position = Vector2(1300, -280)
nodes/fragment/52/node = SubResource("VisualShaderNodeBooleanParameter_eafem")

View file

@ -44,7 +44,9 @@ shader = ExtResource("1_u0w43")
shader_parameter/albedo = Color(0, 0.32, 0.43, 1)
shader_parameter/albedo2 = Color(0, 0.47, 0.76, 1)
shader_parameter/color_deep = Color(0.11, 0.29, 0.33, 1)
shader_parameter/color_shallow = Color(0, 0.47, 0.76, 1)
shader_parameter/color_shallow = Color(1, 1, 1, 1)
shader_parameter/shore_fade = 0.165
shader_parameter/shore_intensity = 0.285
shader_parameter/metallic = 0.0
shader_parameter/roughness = 0.02
shader_parameter/texture_normal = SubResource("NoiseTexture2D_mf4pf")
@ -56,7 +58,7 @@ shader_parameter/wave_2_direction = Vector2(0, 2)
shader_parameter/time_scale = 0.01
shader_parameter/wave_speed = 0.05
shader_parameter/noise_scale = 15.0
shader_parameter/height_scale = 0.25
shader_parameter/height_scale = 1.08
shader_parameter/beers_law = 2.0
shader_parameter/depth_offset = -0.75
shader_parameter/edge_scale = 0.1

View file

@ -1,5 +1,6 @@
[gd_scene load_steps=9 format=3 uid="uid://hs3a438it6j6"]
[gd_scene load_steps=11 format=3 uid="uid://hs3a438it6j6"]
[ext_resource type="Script" uid="uid://btd340abbfpke" path="res://ocean/oceanTEST.gd" id="1_2qsx7"]
[ext_resource type="Material" uid="uid://djvstk5qjvdan" path="res://ocean/Ocean2.tres" id="1_kiaws"]
[ext_resource type="Script" uid="uid://c12fpc7inp27s" path="res://ocean/ocean.gd" id="2_ap626"]
[ext_resource type="PackedScene" uid="uid://babgqvkugifk1" path="res://boat/boat.tscn" id="3_ap626"]
@ -31,6 +32,13 @@ size = Vector2(10.5, 10.5)
subdivide_width = 50
subdivide_depth = 50
[sub_resource type="PlaneMesh" id="PlaneMesh_2qsx7"]
resource_name = "OceanTile_Far"
material = ExtResource("1_kiaws")
size = Vector2(10.5, 10.5)
subdivide_width = 25
subdivide_depth = 25
[node name="Node3D" type="Node3D"]
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
@ -41,8 +49,10 @@ transform = Transform3D(-0.866025, -0.433013, 0.25, 0, 0.5, 0.866025, -0.5, 0.75
shadow_enabled = true
[node name="Ocean" type="Node3D" parent="."]
script = ExtResource("1_2qsx7")
[node name="Water_Tile_00" type="MeshInstance3D" parent="Ocean"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0531927, 0.00491202, 0.00426149)
mesh = SubResource("PlaneMesh_mf4pf")
skeleton = NodePath("../..")
script = ExtResource("2_ap626")
@ -95,8 +105,104 @@ mesh = SubResource("PlaneMesh_ap626")
skeleton = NodePath("../..")
script = ExtResource("2_ap626")
[node name="Water_Tile_09" type="MeshInstance3D" parent="Ocean"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 0)
mesh = SubResource("PlaneMesh_2qsx7")
skeleton = NodePath("../..")
script = ExtResource("2_ap626")
[node name="Water_Tile_11" type="MeshInstance3D" parent="Ocean"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 10)
mesh = SubResource("PlaneMesh_2qsx7")
skeleton = NodePath("../..")
script = ExtResource("2_ap626")
[node name="Water_Tile_10" type="MeshInstance3D" parent="Ocean"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 20)
mesh = SubResource("PlaneMesh_2qsx7")
skeleton = NodePath("../..")
script = ExtResource("2_ap626")
[node name="Water_Tile_12" type="MeshInstance3D" parent="Ocean"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 20)
mesh = SubResource("PlaneMesh_2qsx7")
skeleton = NodePath("../..")
script = ExtResource("2_ap626")
[node name="Water_Tile_13" type="MeshInstance3D" parent="Ocean"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 20)
mesh = SubResource("PlaneMesh_2qsx7")
skeleton = NodePath("../..")
script = ExtResource("2_ap626")
[node name="Water_Tile_14" type="MeshInstance3D" parent="Ocean"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, 20)
mesh = SubResource("PlaneMesh_2qsx7")
skeleton = NodePath("../..")
script = ExtResource("2_ap626")
[node name="Water_Tile_15" type="MeshInstance3D" parent="Ocean"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20, 0, 20)
mesh = SubResource("PlaneMesh_2qsx7")
skeleton = NodePath("../..")
script = ExtResource("2_ap626")
[node name="Water_Tile_16" type="MeshInstance3D" parent="Ocean"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20, 0, 0)
mesh = SubResource("PlaneMesh_2qsx7")
skeleton = NodePath("../..")
script = ExtResource("2_ap626")
[node name="Water_Tile_17" type="MeshInstance3D" parent="Ocean"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20, 0, -10)
mesh = SubResource("PlaneMesh_2qsx7")
skeleton = NodePath("../..")
script = ExtResource("2_ap626")
[node name="Water_Tile_18" type="MeshInstance3D" parent="Ocean"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20, 0, -20)
mesh = SubResource("PlaneMesh_2qsx7")
skeleton = NodePath("../..")
script = ExtResource("2_ap626")
[node name="Water_Tile_19" type="MeshInstance3D" parent="Ocean"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, -20)
mesh = SubResource("PlaneMesh_2qsx7")
skeleton = NodePath("../..")
script = ExtResource("2_ap626")
[node name="Water_Tile_20" type="MeshInstance3D" parent="Ocean"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20, 0, 10)
mesh = SubResource("PlaneMesh_2qsx7")
skeleton = NodePath("../..")
script = ExtResource("2_ap626")
[node name="Water_Tile_21" type="MeshInstance3D" parent="Ocean"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, -20)
mesh = SubResource("PlaneMesh_2qsx7")
skeleton = NodePath("../..")
script = ExtResource("2_ap626")
[node name="Water_Tile_22" type="MeshInstance3D" parent="Ocean"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -20)
mesh = SubResource("PlaneMesh_2qsx7")
skeleton = NodePath("../..")
script = ExtResource("2_ap626")
[node name="Water_Tile_23" type="MeshInstance3D" parent="Ocean"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, -20)
mesh = SubResource("PlaneMesh_2qsx7")
skeleton = NodePath("../..")
script = ExtResource("2_ap626")
[node name="Water_Tile_24" type="MeshInstance3D" parent="Ocean"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, -10)
mesh = SubResource("PlaneMesh_2qsx7")
skeleton = NodePath("../..")
script = ExtResource("2_ap626")
[node name="Boat" parent="." node_paths=PackedStringArray("ocean") instance=ExtResource("3_ap626")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.473399, -0.388613, 0)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.473399, -0.51799, 0)
float_force = 75.0
ocean = NodePath("../Ocean/Water_Tile_00")
max_thrust_force = 3000.0

View file

@ -8,7 +8,8 @@ uniform vec3 albedo : source_color = vec3(0.0,0.32,0.43);
uniform vec3 albedo2 : source_color= vec3(0.0,0.47,0.76);
uniform vec4 color_deep : source_color= vec4(0.11,0.29,0.33,1.0);
uniform vec4 color_shallow : source_color= vec4(0.0,0.47,0.76,1.0);
uniform float shore_fade = 1.0;
uniform float shore_intensity = 1.0;
uniform float metallic : hint_range(0.0, 1.0) = 0;
uniform float roughness : hint_range(0.0, 1.0) = 0.02;
@ -55,6 +56,13 @@ void fragment() {
depth = depth + VERTEX.z;
float depth_blend = exp((depth + depth_offset) * -beers_law);
depth_blend = clamp(1.0 - depth_blend, 0.0, 1.0);
float depth_tex = texture(DEPTH_TEXTURE, SCREEN_UV).r;
vec4 depth_world_pos = INV_PROJECTION_MATRIX * vec4(SCREEN_UV * 2.0 - 1.0, depth_tex, 1.0);
depth_world_pos.xyz /= depth_world_pos.w;
float shore_line = clamp(1.0 - smoothstep(depth_world_pos.z + shore_fade, depth_world_pos.z, VERTEX.z), 0.0, 1.0);
vec3 shore_color = mix(color_shallow.rgb, edge_color, shore_line);
vec3 screen_color = textureLod(SCREEN_TEXTURE, SCREEN_UV, depth_blend * 2.5).rgb;
vec3 depth_color = mix(color_shallow.rgb, color_deep.rgb, depth_blend);
@ -73,7 +81,7 @@ void fragment() {
vec3 surface_color = mix(albedo, albedo2, fresnel);
vec3 depth_color_adj = mix(edge_color, color, step(edge_scale, z_dif));
ALBEDO = clamp(surface_color + depth_color_adj,vec3(0),vec3(1.0));
ALBEDO = clamp(surface_color + depth_color_adj + shore_color * shore_intensity,vec3(0),vec3(1.0));
ALPHA = 1.0;
METALLIC = metallic;
ROUGHNESS = roughness;

12
ocean/oceanTEST.gd Normal file
View file

@ -0,0 +1,12 @@
extends Node3D
# 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:
global_position.x = $"../Boat".global_position.x
global_position.z = $"../Boat".global_position.z

1
ocean/oceanTEST.gd.uid Normal file
View file

@ -0,0 +1 @@
uid://btd340abbfpke