manage color and exposure during rain e storm; remove wind from rice; disable fireflies on rain, snow or storm; remove key for fireworks test; add hero to railway_pool; manage train windows

This commit is contained in:
2026-06-02 08:39:46 +02:00
parent dcf5d28248
commit fdfe2336f8
10 changed files with 179 additions and 24 deletions

View File

@@ -58,19 +58,19 @@ script = ExtResource("2_0bmh1")
north = true
south = true
[node name="Argini_003" parent="." index="0" unique_id=1178813592]
[node name="Argini_003" parent="." index="0" unique_id=509439881]
surface_material_override/0 = ExtResource("3_c4jie")
[node name="Grass_005" parent="." index="1" unique_id=1427965126 groups=["weather_vegetables_node", "wind_node"]]
[node name="Grass_005" parent="." index="1" unique_id=188609017 groups=["weather_vegetables_node", "wind_node"]]
surface_material_override/0 = ExtResource("3_c4jie")
[node name="MSH_Staccioanta_1_002" parent="." index="2" unique_id=562234307]
[node name="MSH_Staccioanta_1_002" parent="." index="2" unique_id=746941179]
surface_material_override/0 = ExtResource("4_lr7xw")
[node name="Strada_004" parent="." index="3" unique_id=387203009 groups=["weather_node"]]
[node name="Strada_004" parent="." index="3" unique_id=604168900 groups=["weather_node"]]
surface_material_override/0 = ExtResource("5_5jc2f")
[node name="Water_004" parent="." index="4" unique_id=1258756459]
[node name="Water_004" parent="." index="4" unique_id=244513747]
surface_material_override/0 = ExtResource("6_0bmh1")
[node name="grass" type="Node3D" parent="." index="5" unique_id=1540226859 groups=["weather_vegetables_node", "wind_node"]]
@@ -104,7 +104,7 @@ material_override = ExtResource("10_tbcfd")
cast_shadow = 0
multimesh = SubResource("MultiMesh_e417f")
[node name="rice" type="Node3D" parent="." index="6" unique_id=1524870522 groups=["weather_vegetables_node", "wind_node"]]
[node name="rice" type="Node3D" parent="." index="6" unique_id=1524870522 groups=["weather_vegetables_node"]]
visible = false
[node name="rice_plane" type="MeshInstance3D" parent="rice" index="0" unique_id=629743434]

View File

@@ -9,7 +9,7 @@
[ext_resource type="Material" uid="uid://jygb1hcokks5" path="res://tgcc/chunk/prop/grass/grass_bank.tres" id="6_cxqsi"]
[ext_resource type="Material" uid="uid://fnjxocmx16b7" path="res://tgcc/chunk/prop/grass/grass_chunk.tres" id="7_vkypx"]
[ext_resource type="Material" uid="uid://0x17mj2v807r" path="res://tgcc/chunk/prop/grass/grass_chunk_weeds2.tres" id="8_k7yf4"]
[ext_resource type="ArrayMesh" uid="uid://doophefr873pt" path="res://tgcc/chunk/prop/tree/bambù/Bambu.res" id="11_fy14c"]
[ext_resource type="ArrayMesh" uid="uid://bg5rfu7tyl3p8" path="res://tgcc/chunk/prop/tree/bambù/Bambu.res" id="11_fy14c"]
[ext_resource type="PackedScene" uid="uid://d12t04rs47jq3" path="res://tgcc/chunk/prop/tree/tree_01/tree_01.tscn" id="12_fqf4n"]
[ext_resource type="Script" uid="uid://cp1pb5dnuojg3" path="res://tgcc/chunk/prop/tree/bambù/bambu.gd" id="12_s2jc4"]
@@ -60,20 +60,20 @@ script = ExtResource("2_vkypx")
river_north = true
river_south = true
[node name="Argini_011" parent="." index="0" unique_id=895986402]
[node name="Argini_011" parent="." index="0" unique_id=1103166467]
surface_material_override/0 = ExtResource("2_mic04")
surface_material_override/1 = ExtResource("2_mic04")
[node name="Grass_019" parent="." index="1" unique_id=1784106582]
[node name="Grass_019" parent="." index="1" unique_id=163702648]
surface_material_override/0 = ExtResource("2_mic04")
[node name="Water_012" parent="." index="2" unique_id=1865739867]
[node name="Water_012" parent="." index="2" unique_id=183333409]
surface_material_override/0 = ExtResource("3_5p1m2")
[node name="Water_F_015" parent="." index="3" unique_id=147107428]
[node name="Water_F_015" parent="." index="3" unique_id=1691016237]
surface_material_override/0 = ExtResource("4_532mt")
[node name="rice" type="Node3D" parent="." index="4" unique_id=1336289627 groups=["weather_vegetables_node", "wind_node"]]
[node name="rice" type="Node3D" parent="." index="4" unique_id=1336289627 groups=["weather_vegetables_node"]]
transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 21.006079, 0, 0)
[node name="rice_plane" type="MeshInstance3D" parent="rice" index="0" unique_id=1744988640]

View File

@@ -8,6 +8,7 @@
[ext_resource type="Material" uid="uid://o31kp0jm07q3" path="res://tgcc/chunk/material/rocks.tres" id="5_pj7tp"]
[ext_resource type="Material" uid="uid://d4vsl672lwv7" path="res://tgcc/chunk/material/rocks2.tres" id="6_5hjh1"]
[ext_resource type="Shader" uid="uid://d0ch5ofrgf7y6" path="res://core/daynight/trunk_shader.gdshader" id="8_d3e7a"]
[ext_resource type="Script" uid="uid://5frq4qrokiy2" path="res://tgcc/train/train_glass_emission.gd" id="9_4qk3b"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_fuy7x"]
render_priority = 0
@@ -31,17 +32,18 @@ shader_parameter/emission_color = Color(0.3875077, 0.16205889, 0.035861596, 1)
shader_parameter/emission_energy = 12.00000057
[node name="Treno" unique_id=1182090923 instance=ExtResource("1_33mei")]
script = ExtResource("9_4qk3b")
[node name="Finestrini" parent="." index="0" unique_id=1797001001]
[node name="Finestrini" parent="." index="0" unique_id=271431519]
surface_material_override/0 = ExtResource("2_bks4l")
surface_material_override/1 = ExtResource("3_sgpgi")
surface_material_override/2 = ExtResource("4_gua5y")
[node name="Ruote" parent="." index="1" unique_id=226016697]
[node name="Ruote" parent="." index="1" unique_id=1570760095]
surface_material_override/0 = ExtResource("5_pj7tp")
surface_material_override/1 = ExtResource("4_gua5y")
[node name="Train" parent="." index="2" unique_id=1876679965]
[node name="Train" parent="." index="2" unique_id=301191703]
surface_material_override/0 = ExtResource("6_5hjh1")
surface_material_override/1 = ExtResource("2_5yo4e")
surface_material_override/2 = ExtResource("2_bks4l")

View File

@@ -0,0 +1,100 @@
## Updates the train window emission during the day/night cycle.
extends Node3D
@export_group("Windows")
@export var glass_surface_index: int = 1
@export var morning_emissive_intensity: float = 0.0
@export var night_emissive_intensity: float = 8.0
var _glass_material: ShaderMaterial
var _sunrise_time: float = 0.0
var _night_time: float = 0.0
@onready var _finestrini: MeshInstance3D = $Finestrini
func _ready() -> void:
var environment_manager: EnvironmentManagerRoot = _get_environment_manager()
if environment_manager == null or environment_manager.environment_config == null:
return
_sunrise_time = environment_manager.environment_config.sunrise
_night_time = environment_manager.environment_config.night
if _finestrini != null:
_glass_material = _finestrini.get_surface_override_material(glass_surface_index) as ShaderMaterial
_apply_emissive_intensity(_get_current_normalized_time())
if not UIEvents.day_time_changed.is_connected(_on_day_time_changed):
UIEvents.day_time_changed.connect(_on_day_time_changed)
func _exit_tree() -> void:
if UIEvents.day_time_changed.is_connected(_on_day_time_changed):
UIEvents.day_time_changed.disconnect(_on_day_time_changed)
func _get_current_normalized_time() -> float:
var environment_manager: EnvironmentManagerRoot = _get_environment_manager()
if environment_manager == null:
return _sunrise_time
if environment_manager.day_night_controller != null:
return environment_manager.day_night_controller.current_time
if environment_manager.environment_config != null:
return environment_manager.environment_config.start_time
return _sunrise_time
func _get_environment_manager() -> EnvironmentManagerRoot:
var current_scene: Node = get_tree().current_scene
if current_scene == null:
return null
for child in current_scene.get_children():
var environment_manager := child as EnvironmentManagerRoot
if environment_manager != null:
return environment_manager
return null
func _apply_emissive_intensity(normalized_time: float) -> void:
if _glass_material == null:
return
_glass_material.set_shader_parameter(
"intensita_emissiva",
_calculate_emissive_intensity(normalized_time)
)
func _calculate_emissive_intensity(normalized_time: float) -> float:
var wrapped_time: float = wrapf(normalized_time, 0.0, 1.0)
var sunrise_time: float = clampf(_sunrise_time, 0.0, 1.0)
var night_time: float = clampf(_night_time, sunrise_time, 1.0)
if sunrise_time > 0.0 and wrapped_time < sunrise_time:
var night_to_morning_t: float = wrapped_time / sunrise_time
return lerpf(
night_emissive_intensity,
morning_emissive_intensity,
night_to_morning_t
)
if is_equal_approx(night_time, sunrise_time):
return morning_emissive_intensity
var morning_to_night_t: float = inverse_lerp(sunrise_time, night_time, wrapped_time)
return lerpf(
morning_emissive_intensity,
night_emissive_intensity,
clampf(morning_to_night_t, 0.0, 1.0)
)
func _on_day_time_changed(value: float, _time_string: String) -> void:
_apply_emissive_intensity(value)

View File

@@ -0,0 +1 @@
uid://5frq4qrokiy2