feat(integration): wire Sprint 1 effects (water surface, godrays, caustics, bio particles, block burst) + rebuild v0.2

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Floppyrj45
2026-04-19 18:18:28 +02:00
parent d8e19932cc
commit e78daa2a22
6 changed files with 31 additions and 3 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,10 +1,11 @@
[gd_scene load_steps=7 format=3 uid="uid://dolphin_main"]
[gd_scene load_steps=8 format=3 uid="uid://dolphin_main"]
[ext_resource type="Script" path="res://scripts/dolphin/DolphinController.gd" id="1_controller"]
[ext_resource type="Script" path="res://scripts/dolphin/HUD.gd" id="2_hud"]
[ext_resource type="Script" path="res://scripts/dolphin/EcholocationPulse.gd" id="3_echo"]
[ext_resource type="Script" path="res://scripts/dolphin/BubbleTrail.gd" id="4_bubble_trail"]
[ext_resource type="Script" path="res://scripts/dolphin/DolphinMeshBuilder.gd" id="5_builder"]
[ext_resource type="Script" uid="uid://dyym376d03yto" path="res://scripts/ambience/GodraysOverlay.gd" id="6_godrays"]
[sub_resource type="CapsuleShape3D" id="1_colshape"]
radius = 0.35
@@ -36,6 +37,10 @@ rotation = Vector3(0, 3.14159, 0)
[node name="Camera" type="Camera3D" parent="CameraPivot/SpringArm"]
[node name="GodraysOverlay" type="MeshInstance3D" parent="CameraPivot/SpringArm/Camera"]
position = Vector3(0, 0, -5)
script = ExtResource("6_godrays")
[node name="BubbleEmitterPoint" type="Node3D" parent="."]
position = Vector3(0, 0, 1.2)

View File

@@ -1,10 +1,13 @@
[gd_scene load_steps=6 format=3 uid="uid://dauphincraft_main"]
[gd_scene load_steps=11 format=3 uid="uid://dauphincraft_main"]
[ext_resource type="Script" path="res://scripts/Main.gd" id="1_mainscript"]
[ext_resource type="Script" path="res://scripts/ambience/UnderwaterEnvironment.gd" id="2_uwenv"]
[ext_resource type="PackedScene" path="res://scenes/World.tscn" id="3_world"]
[ext_resource type="PackedScene" path="res://scenes/Dolphin.tscn" id="4_dolphin"]
[ext_resource type="Script" path="res://scripts/ambience/PlanktonParticles.gd" id="5_plankton"]
[ext_resource type="PackedScene" uid="uid://dauphincraft_watersurface" path="res://scenes/WaterSurface.tscn" id="6_watersurface"]
[ext_resource type="Script" uid="uid://d1v40uwv1k73a" path="res://scripts/ambience/CausticsLayer.gd" id="7_caustics"]
[ext_resource type="Script" uid="uid://p4wxq06qavu4" path="res://scripts/ambience/BioluminescentParticles.gd" id="8_biolum"]
[node name="Main" type="Node3D"]
script = ExtResource("1_mainscript")
@@ -23,7 +26,16 @@ shadow_enabled = true
[node name="Dolphin" parent="." instance=ExtResource("4_dolphin")]
position = Vector3(0, 55, 0)
[node name="WaterSurface" parent="." instance=ExtResource("6_watersurface")]
position = Vector3(0, 0, 0)
[node name="PlanktonFollower" type="Node3D" parent="."]
[node name="PlanktonParticles" type="GPUParticles3D" parent="PlanktonFollower"]
script = ExtResource("5_plankton")
[node name="CausticsLayer" type="Node3D" parent="PlanktonFollower"]
script = ExtResource("7_caustics")
[node name="BioluminescentParticles" type="GPUParticles3D" parent="PlanktonFollower"]
script = ExtResource("8_biolum")

View File

@@ -203,8 +203,9 @@ func _unhandled_input(event: InputEvent) -> void:
func _on_block_break(hit_position: Vector3, _normal: Vector3) -> void:
var broken_id: int = 0
if NetworkManager.is_solo():
var broken_id: int = world.break_block(hit_position)
broken_id = world.break_block(hit_position)
if broken_id > 0:
inventory.add_item(broken_id, 1)
AudioManager.play_bubble_sfx(hit_position)
@@ -212,6 +213,16 @@ func _on_block_break(hit_position: Vector3, _normal: Vector3) -> void:
_world_sync.server_break_block(hit_position)
AudioManager.play_bubble_sfx(hit_position)
# Block break particle burst
var bbp_script := load("res://scripts/dolphin/BlockBreakParticles.gd")
var burst := GPUParticles3D.new()
burst.set_script(bbp_script)
add_child(burst)
var broken_color: Color = Color(0.8, 0.6, 0.3) # default sand
if broken_id > 0:
broken_color = BlockDatabase.get_color(broken_id)
burst.emit_burst(hit_position, broken_color)
func _on_block_place(hit_position: Vector3, normal: Vector3) -> void:
var selected: Variant = inventory.get_selected_item()