fix snow for train and wagons

This commit is contained in:
2026-06-30 11:08:37 +02:00
parent 475749c4df
commit 952058b0e0
4 changed files with 25 additions and 7 deletions

View File

@@ -39,6 +39,7 @@ var weather_controller: WeatherController
var day_tween: Tween
var day_time: float = 0.0
var pending_environment_nodes: Dictionary = {}
var weather_shader_no_noise: Material
func _ready() -> void:
@@ -139,7 +140,7 @@ func _apply_dynamic_environment_materials(node: Node) -> void:
_apply_wind_noise_to_node(node, NOISE_TEXTURE)
if node.is_in_group("weather_node"):
_apply_weather_overlay_to_node(node, WEATHER_SHADER)
_apply_weather_overlay_to_node(node, _get_weather_overlay_material(node))
if _should_clear_weather_overlay(node):
_clear_weather_overlay_from_node(node)
@@ -165,12 +166,24 @@ func _apply_wind_noise_to_node(node: Node, noise_tex: Texture2D) -> void:
func ApplyWeatherShaderToMaterials():
for node in get_tree().get_nodes_in_group("weather_node"):
_apply_weather_overlay_to_node(node, WEATHER_SHADER)
_apply_weather_overlay_to_node(node, _get_weather_overlay_material(node))
for node in get_tree().get_nodes_in_group("weather_vegetables_node"):
if _should_clear_weather_overlay(node):
_clear_weather_overlay_from_node(node)
func _get_weather_overlay_material(node: Node) -> Material:
if not node.is_in_group("weather_overlay_no_noise"):
return WEATHER_SHADER
if weather_shader_no_noise == null:
weather_shader_no_noise = WEATHER_SHADER.duplicate() as Material
var shader_material := weather_shader_no_noise as ShaderMaterial
if shader_material:
shader_material.set_shader_parameter("snow_noise_enabled", false)
return weather_shader_no_noise
func _apply_weather_overlay_to_node(node: Node, material: Material) -> void:
if _should_clear_weather_overlay(node):
_clear_weather_overlay_from_node(node)
@@ -218,7 +231,7 @@ func _shader_material_uses_alpha_texture(material: ShaderMaterial) -> bool:
return material.shader.code.find("alpha_texture") != -1
func _should_clear_weather_overlay(node: Node) -> bool:
return node.is_in_group("weather_vegetables_node")
return node.is_in_group("weather_vegetables_node") or node.is_in_group("weather_overlay_ignore")
func select_day_time(normalized_time: float) -> void:
#set show_day_time_debug = true to show debug on screen