create weather controller and daynight controller

This commit is contained in:
2026-03-24 13:56:36 +01:00
parent 5e9611ed44
commit 36d6f29fd3
45 changed files with 2186 additions and 0 deletions

View File

@@ -0,0 +1,70 @@
extends Camera3D
@export_group("Movement")
@export var move_speed: float = 10.0
@export var fast_move_multiplier: float = 3.0
@export var move_smoothing: float = 10.0
@export_group("Look")
@export var mouse_sensitivity: float = 0.3
@export var invert_y: bool = false
var _velocity: Vector3 = Vector3.ZERO
var _yaw: float = 0.0 # Y rotation
var _pitch: float = 0.0 # X rotation
var _is_active: bool = false
func _ready() -> void:
#Current rotation
_yaw = rotation_degrees.y
_pitch = rotation_degrees.x
func _unhandled_input(event: InputEvent) -> void:
#Activate camera movement using mouse right button
if event is InputEventMouseButton:
if event.button_index == MOUSE_BUTTON_RIGHT:
_is_active = event.pressed
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED if _is_active else Input.MOUSE_MODE_VISIBLE
if event is InputEventMouseMotion and _is_active:
_yaw -= event.relative.x * mouse_sensitivity
var pitch_delta = event.relative.y * mouse_sensitivity
_pitch += pitch_delta if invert_y else -pitch_delta
_pitch = clamp(_pitch, -89.0, 89.0)
if event.is_action_pressed("ui_cancel"):
_is_active = false
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
func _physics_process(delta: float) -> void:
rotation_degrees.y = _yaw
rotation_degrees.x = _pitch
if not _is_active:
_velocity = _velocity.lerp(Vector3.ZERO, move_smoothing * delta)
position += _velocity * delta
return
var input_dir := Vector3.ZERO
if Input.is_key_pressed(KEY_W) or Input.is_key_pressed(KEY_UP):
input_dir -= basis.z # avanti
if Input.is_key_pressed(KEY_S) or Input.is_key_pressed(KEY_DOWN):
input_dir += basis.z # indietro
if Input.is_key_pressed(KEY_A) or Input.is_key_pressed(KEY_LEFT):
input_dir -= basis.x # sinistra
if Input.is_key_pressed(KEY_D) or Input.is_key_pressed(KEY_RIGHT):
input_dir += basis.x # destra
if Input.is_key_pressed(KEY_E) or Input.is_key_pressed(KEY_PAGEUP):
input_dir += Vector3.UP # su (world space)
if Input.is_key_pressed(KEY_Q) or Input.is_key_pressed(KEY_PAGEDOWN):
input_dir += Vector3.DOWN # giù (world space)
if input_dir != Vector3.ZERO:
input_dir = input_dir.normalized()
var speed := move_speed * fast_move_multiplier if Input.is_key_pressed(KEY_SHIFT) else move_speed
var target_velocity := input_dir * speed
_velocity = _velocity.lerp(target_velocity, move_smoothing * delta)
position += _velocity * delta

View File

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

View File

@@ -0,0 +1,13 @@
extends Control
func _on_rain_toggled(toggled_on: bool) -> void:
UIEvents.toggle_rain.emit(toggled_on)
func _on_snow_toggled(toggled_on: bool) -> void:
UIEvents.toggle_snow.emit(toggled_on)
func _on_wind_toggled(toggled_on: bool) -> void:
UIEvents.toggle_wind.emit(toggled_on)
func _on_fireflies_toggled(toggled_on: bool) -> void:
UIEvents.toggle_fireflies.emit(toggled_on)

View File

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

View File

@@ -0,0 +1,180 @@
[gd_scene format=3 uid="uid://bjkhawylawqof"]
[ext_resource type="PackedScene" uid="uid://cmuvmmp7xam4o" path="res://core/daynight/environment_management.tscn" id="1_daynt"]
[ext_resource type="Shader" uid="uid://bneoex8xpmcm8" path="res://core/daynight/sky.gdshader" id="3_jiovi"]
[ext_resource type="Texture2D" uid="uid://dest0qa7vaid0" path="res://core/daynight/stars_albedo.png" id="4_abyor"]
[ext_resource type="Script" uid="uid://brcimd12tx3dm" path="res://core/daynight/edge_detection_compositor.gd" id="5_jgh18"]
[ext_resource type="Script" uid="uid://cx2tlvxhvatj5" path="res://docs/museums/daynight/control.gd" id="6_q52t1"]
[ext_resource type="Script" uid="uid://ccdd52apoh4ir" path="res://docs/museums/daynight/camera_3d.gd" id="7_p2t1d"]
[sub_resource type="FastNoiseLite" id="FastNoiseLite_jiovi"]
fractal_lacunarity = 1.915
fractal_gain = 0.53
fractal_weighted_strength = 0.35
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_abyor"]
noise = SubResource("FastNoiseLite_jiovi")
seamless = true
[sub_resource type="ShaderMaterial" id="ShaderMaterial_abyor"]
shader = ExtResource("3_jiovi")
shader_parameter/sky_top_color = Color(0, 0.84999996, 1.5999999, 1)
shader_parameter/sky_horizon_color = Color(0.55, 1.0500001, 1.55, 1)
shader_parameter/night_intensity = 0.0
shader_parameter/cloud_noise = SubResource("NoiseTexture2D_abyor")
shader_parameter/sun_color = Color(1, 1.1999999, 1.4000001, 1)
shader_parameter/cloud_center_color = Color(1, 1, 1, 1)
shader_parameter/cloud_edge_color = Color(0.8, 0.85, 0.9, 1)
shader_parameter/cloud_direction = Vector2(0.5, 0.2)
shader_parameter/cloud_speed = 0.1
shader_parameter/cloud_scale = 0.5
shader_parameter/cloud_threshold = 0.5
shader_parameter/cloud_edge_thickness = 0.406000019285
shader_parameter/cloud_edge_softness = 0.0
shader_parameter/star_density = 1500.0
shader_parameter/star_rarity = 2500.0
shader_parameter/star_scale_variation = 0.5
shader_parameter/shooting_star_texture = ExtResource("4_abyor")
shader_parameter/shooting_star_color = Color(0.38431373, 0.61960787, 0.23137255, 1)
shader_parameter/shooting_star_density = 1.0
shader_parameter/shooting_star_speed = 1.0
shader_parameter/shooting_star_scale = 5.0
shader_parameter/shooting_star_lifetime = 0.5
shader_parameter/shooting_star_travel_dist = 15.0
[sub_resource type="Sky" id="Sky_50i22"]
sky_material = SubResource("ShaderMaterial_abyor")
[sub_resource type="Environment" id="Environment_icuhg"]
background_mode = 2
sky = SubResource("Sky_50i22")
ambient_light_color = Color(1, 1.1999999, 1.4000001, 1)
tonemap_exposure = 1.05
ssao_enabled = true
ssao_radius = 0.5
ssao_intensity = 14.0
ssao_detail = 0.0
ssil_enabled = true
glow_enabled = true
glow_levels/4 = 1.0
glow_intensity = 1.6
glow_strength = 0.65
glow_bloom = 1.0
fog_enabled = true
fog_mode = 1
fog_light_color = Color(0.55, 1.0500001, 1.55, 1)
fog_density = 0.008
fog_sky_affect = 0.0
[sub_resource type="CompositorEffect" id="CompositorEffect_q52t1"]
resource_local_to_scene = false
resource_name = ""
enabled = true
effect_callback_type = 1
access_resolved_color = false
access_resolved_depth = false
needs_motion_vectors = false
needs_normal_roughness = false
script = ExtResource("5_jgh18")
metadata/_custom_type_script = "uid://brcimd12tx3dm"
[sub_resource type="Compositor" id="Compositor_jbfcc"]
compositor_effects = Array[CompositorEffect]([SubResource("CompositorEffect_q52t1")])
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_p2t1d"]
albedo_color = Color(0.135, 0.45, 0.18224995, 1)
[sub_resource type="BoxMesh" id="BoxMesh_p2t1d"]
size = Vector3(200, 0.08, 200)
[node name="Museum" type="Node3D" unique_id=1411616506]
[node name="DayNight" parent="." unique_id=1578787116 instance=ExtResource("1_daynt")]
[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=6398994]
environment = SubResource("Environment_icuhg")
compositor = SubResource("Compositor_jbfcc")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=565189502]
transform = Transform3D(0.17364818, 0.69636416, 0.69636416, 0, 0.7071067, -0.7071067, -0.9848075, 0.12278782, 0.12278782, 0, 0, 0)
light_color = Color(1, 1.1999999, 1.4000001, 1)
light_indirect_energy = 0.0
light_volumetric_fog_energy = 0.0
shadow_enabled = true
shadow_bias = 0.2
shadow_normal_bias = 0.0
shadow_opacity = 0.97
shadow_blur = 0.4
directional_shadow_mode = 0
directional_shadow_fade_start = 0.9
[node name="Control" type="Control" parent="." unique_id=1032167802]
layout_mode = 3
anchors_preset = 0
offset_right = 40.0
offset_bottom = 40.0
script = ExtResource("6_q52t1")
[node name="Snow" type="CheckButton" parent="Control" unique_id=1267493556]
layout_mode = 0
offset_left = 21.0
offset_top = 13.0
offset_right = 109.0
offset_bottom = 44.0
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_colors/font_focus_color = Color(0, 0, 0, 1)
theme_override_colors/font_pressed_color = Color(0, 0, 0, 1)
theme_override_colors/font_hover_color = Color(0, 0, 0, 1)
theme_override_colors/font_hover_pressed_color = Color(0, 0, 0, 1)
text = "Snow"
[node name="Rain" type="CheckButton" parent="Control" unique_id=1387886007]
layout_mode = 0
offset_left = 21.0
offset_top = 41.0
offset_right = 109.0
offset_bottom = 72.0
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_colors/font_focus_color = Color(0, 0, 0, 1)
theme_override_colors/font_pressed_color = Color(0, 0, 0, 1)
theme_override_colors/font_hover_color = Color(0, 0, 0, 1)
theme_override_colors/font_hover_pressed_color = Color(0, 0, 0, 1)
text = "Rain"
[node name="Wind" type="CheckButton" parent="Control" unique_id=1160113828]
layout_mode = 0
offset_left = 21.0
offset_top = 71.0
offset_right = 109.0
offset_bottom = 102.0
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_colors/font_focus_color = Color(0, 0, 0, 1)
theme_override_colors/font_pressed_color = Color(0, 0, 0, 1)
theme_override_colors/font_hover_color = Color(0, 0, 0, 1)
theme_override_colors/font_hover_pressed_color = Color(0, 0, 0, 1)
text = "Wind"
[node name="Fireflies" type="CheckButton" parent="Control" unique_id=1177089839]
layout_mode = 0
offset_left = 21.0
offset_top = 100.0
offset_right = 130.0
offset_bottom = 131.0
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_colors/font_focus_color = Color(0, 0, 0, 1)
theme_override_colors/font_pressed_color = Color(0, 0, 0, 1)
theme_override_colors/font_hover_color = Color(0, 0, 0, 1)
theme_override_colors/font_hover_pressed_color = Color(0, 0, 0, 1)
text = "Fireflies"
[node name="Camera3D" type="Camera3D" parent="." unique_id=1893906598]
transform = Transform3D(1, 0, 0, 0, 0.99452555, -0.10449375, 0, 0.10449375, 0.99452555, 0.48949432, 25.39013, 0)
script = ExtResource("7_p2t1d")
[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=1335123628]
material_override = SubResource("StandardMaterial3D_p2t1d")
mesh = SubResource("BoxMesh_p2t1d")
[connection signal="toggled" from="Control/Snow" to="Control" method="_on_snow_toggled"]
[connection signal="toggled" from="Control/Rain" to="Control" method="_on_rain_toggled"]
[connection signal="toggled" from="Control/Wind" to="Control" method="_on_wind_toggled"]

View File

@@ -0,0 +1,151 @@
[gd_scene format=3 uid="uid://bjkhawylawqof"]
[ext_resource type="Script" uid="uid://d27xbipk650kf" path="res://core/daynight/day_night.gd" id="1_o8twy"]
[ext_resource type="Script" uid="uid://butda6k2tli3o" path="res://core/environment_config.gd" id="2_ecsq1"]
[ext_resource type="Shader" uid="uid://bneoex8xpmcm8" path="res://core/daynight/sky.gdshader" id="3_jiovi"]
[ext_resource type="Texture2D" uid="uid://dest0qa7vaid0" path="res://core/daynight/stars_albedo.png" id="4_abyor"]
[ext_resource type="Script" uid="uid://brcimd12tx3dm" path="res://core/daynight/edge_detection_compositor.gd" id="5_jgh18"]
[ext_resource type="Script" uid="uid://cx2tlvxhvatj5" path="res://docs/museums/daynight/control.gd" id="6_q52t1"]
[sub_resource type="Resource" id="Resource_50i22"]
script = ExtResource("2_ecsq1")
metadata/_custom_type_script = "uid://butda6k2tli3o"
[sub_resource type="FastNoiseLite" id="FastNoiseLite_jiovi"]
fractal_lacunarity = 1.915
fractal_gain = 0.53
fractal_weighted_strength = 0.35
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_abyor"]
noise = SubResource("FastNoiseLite_jiovi")
seamless = true
[sub_resource type="ShaderMaterial" id="ShaderMaterial_abyor"]
shader = ExtResource("3_jiovi")
shader_parameter/sky_top_color = Color(0.35, 0.65, 0.9, 1)
shader_parameter/sky_horizon_color = Color(0.75, 0.85, 0.95, 1)
shader_parameter/night_intensity = 0.0
shader_parameter/cloud_noise = SubResource("NoiseTexture2D_abyor")
shader_parameter/sun_color = Color(1, 0.9, 0.8, 1)
shader_parameter/cloud_center_color = Color(1, 1, 1, 1)
shader_parameter/cloud_edge_color = Color(0.8, 0.85, 0.9, 1)
shader_parameter/cloud_direction = Vector2(0.5, 0.2)
shader_parameter/cloud_speed = 0.1
shader_parameter/cloud_scale = 0.5
shader_parameter/cloud_threshold = 0.5
shader_parameter/cloud_edge_thickness = 0.406000019285
shader_parameter/cloud_edge_softness = 0.0
shader_parameter/star_density = 1500.0
shader_parameter/star_rarity = 2500.0
shader_parameter/star_scale_variation = 0.5
shader_parameter/shooting_star_texture = ExtResource("4_abyor")
shader_parameter/shooting_star_color = Color(0.38431373, 0.61960787, 0.23137255, 1)
shader_parameter/shooting_star_density = 1.0
shader_parameter/shooting_star_speed = 1.0
shader_parameter/shooting_star_scale = 5.0
shader_parameter/shooting_star_lifetime = 0.5
shader_parameter/shooting_star_travel_dist = 15.0
[sub_resource type="Sky" id="Sky_50i22"]
sky_material = SubResource("ShaderMaterial_abyor")
[sub_resource type="Environment" id="Environment_icuhg"]
background_mode = 2
sky = SubResource("Sky_50i22")
ambient_light_color = Color(1, 0.9, 0.8, 1)
ssao_enabled = true
ssao_radius = 0.5
ssao_intensity = 14.0
ssao_detail = 0.0
ssil_enabled = true
glow_enabled = true
glow_levels/4 = 1.0
glow_intensity = 1.2
glow_strength = 0.65
glow_bloom = 1.0
fog_enabled = true
fog_mode = 1
fog_light_color = Color(0.75, 0.85, 0.95, 1)
fog_density = 0.005
fog_sky_affect = 0.0
[sub_resource type="CompositorEffect" id="CompositorEffect_q52t1"]
resource_local_to_scene = false
resource_name = ""
enabled = true
effect_callback_type = 1
access_resolved_color = false
access_resolved_depth = false
needs_motion_vectors = false
needs_normal_roughness = false
script = ExtResource("5_jgh18")
metadata/_custom_type_script = "uid://brcimd12tx3dm"
[sub_resource type="Compositor" id="Compositor_jbfcc"]
compositor_effects = Array[CompositorEffect]([SubResource("CompositorEffect_q52t1")])
[node name="Museum" type="Node3D" unique_id=1411616506]
[node name="DayNightRoot" type="Node3D" parent="." unique_id=1578787116]
script = ExtResource("1_o8twy")
environment_config = SubResource("Resource_50i22")
[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=6398994]
environment = SubResource("Environment_icuhg")
compositor = SubResource("Compositor_jbfcc")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=565189502]
transform = Transform3D(0.70710677, -0.1830127, 0.68301266, 0, 0.9659258, 0.25881904, -0.70710677, -0.1830127, 0.68301266, 0, 0, 0)
light_color = Color(1, 0.9, 0.8, 1)
light_indirect_energy = 0.0
light_volumetric_fog_energy = 0.0
shadow_enabled = true
shadow_bias = 0.2
shadow_normal_bias = 0.0
shadow_opacity = 0.97
shadow_blur = 0.4
directional_shadow_mode = 0
directional_shadow_fade_start = 0.9
[node name="Control" type="Control" parent="." unique_id=1032167802]
layout_mode = 3
anchors_preset = 0
offset_right = 40.0
offset_bottom = 40.0
script = ExtResource("6_q52t1")
[node name="Snow" type="CheckButton" parent="Control" unique_id=1267493556]
layout_mode = 0
offset_left = 21.0
offset_top = 13.0
offset_right = 109.0
offset_bottom = 44.0
text = "Snow"
[node name="Rain" type="CheckButton" parent="Control" unique_id=1387886007]
layout_mode = 0
offset_left = 21.0
offset_top = 41.0
offset_right = 109.0
offset_bottom = 72.0
text = "Rain"
[node name="Wind" type="CheckButton" parent="Control" unique_id=1160113828]
layout_mode = 0
offset_left = 21.0
offset_top = 71.0
offset_right = 109.0
offset_bottom = 102.0
text = "Wind"
[node name="Fireflies" type="CheckButton" parent="Control" unique_id=1177089839]
layout_mode = 0
offset_left = 21.0
offset_top = 100.0
offset_right = 130.0
offset_bottom = 131.0
text = "Fireflies"
[connection signal="toggled" from="Control/Snow" to="Control" method="_on_snow_toggled"]
[connection signal="toggled" from="Control/Rain" to="Control" method="_on_rain_toggled"]
[connection signal="toggled" from="Control/Wind" to="Control" method="_on_wind_toggled"]