fix: recover players from shallow freshwater

This commit is contained in:
Alexander Sellite 2026-08-23 00:50:45 -04:00
parent d2ee4a515e
commit 8dbeb06e73
6 changed files with 65 additions and 7 deletions

View file

@ -151,6 +151,11 @@ func _validate_portable_water_body() -> void:
water_body.set("surface_size", Vector2(12.0, 8.0))
water_body.set("fishing_depth", 6.0)
water_body.set("recovery_depth", 7.0)
water_body.set(
"recovery_entry_height_reference",
PlayerWaterTrigger.EntryHeightReference.PLAYER_ORIGIN,
)
water_body.set("recovery_entry_depth_threshold", 0.1)
water_body.set("fish_pool", PondPool)
root.add_child(water_body)
await process_frame
@ -169,8 +174,15 @@ func _validate_portable_water_body() -> void:
assert(is_equal_approx(fishing_region.get_surface_height(), 7.0))
assert(is_equal_approx(fishing_shape_node.position.y, -3.0))
assert(fishing_shape.size.is_equal_approx(Vector3(12.0, 6.0, 8.0)))
var recovery_region := water_body.get_node("RecoveryRegion") as Area3D
var recovery_region := (
water_body.get_node("RecoveryRegion") as PlayerWaterTrigger
)
assert(is_equal_approx(recovery_region.position.y, -3.5))
assert(
recovery_region.entry_height_reference
== PlayerWaterTrigger.EntryHeightReference.PLAYER_ORIGIN
)
assert(is_equal_approx(recovery_region.entry_depth_threshold, 0.1))
water_body.queue_free()
await process_frame

View file

@ -377,6 +377,12 @@ func _validate_generated_region(
assert(ocean != null and fresh_root != null)
assert(ocean.water_type == WaterType.Type.SALT_WATER)
assert(is_equal_approx(ocean.position.y, GeneratedWorldRegion.WATER_HEIGHT))
var ocean_recovery := ocean.get_node("RecoveryRegion") as PlayerWaterTrigger
assert(
ocean_recovery.entry_height_reference
== PlayerWaterTrigger.EntryHeightReference.BODY_CENTER
)
assert(is_equal_approx(ocean_recovery.entry_depth_threshold, 0.35))
var fresh_placement_count := 0
var river_placement_count := 0
var polygon_sizes_by_coordinate: Dictionary[Vector2i, int] = {}
@ -415,6 +421,14 @@ func _validate_generated_region(
assert(fresh.surface_size.x <= 10.0 and fresh.surface_size.y <= 10.0)
assert(not fresh.visual_surface_enabled)
assert(not (fresh.get_node("VisualWater") as MeshInstance3D).visible)
var fresh_recovery := (
fresh.get_node("RecoveryRegion") as PlayerWaterTrigger
)
assert(
fresh_recovery.entry_height_reference
== PlayerWaterTrigger.EntryHeightReference.PLAYER_ORIGIN
)
assert(is_equal_approx(fresh_recovery.entry_depth_threshold, 0.1))
var coordinate_tokens := child.name.trim_prefix("FreshWater_").split("_")
assert(coordinate_tokens.size() == 2)
var coordinate := Vector2i(