add fake shadow

This commit is contained in:
Matteo Sonaglioni
2026-03-16 00:47:06 +01:00
parent ccdfba2878
commit 461a08aa6d
31 changed files with 725 additions and 94 deletions

View File

@@ -15,6 +15,14 @@ extends Node3D
@export_group("Cinematic Mode")
@export var tempo_cambio_camera : float = 10.0
# --- NUOVO: Variabili per lo Zoom Cinematico ---
@export_group("Zoom Isometrico")
@export var size_normale : float = 35.0
@export var size_zoom : float = 60.0
@export var tempo_zoom : float = 1.2
var is_zoomed : bool = false
var zoom_tween : Tween
var is_moving_enabled : bool = true
# --- Variabili Cinematic Mode ---
@@ -63,6 +71,20 @@ func _input(event):
else:
print("Cinematic Mode: DISATTIVATA")
return
# --- NUOVO: TASTO Z: ZOOM DOLCE CAMERA ISOMETRICA ---
if event.keycode == KEY_Z and camera_iso:
is_zoomed = !is_zoomed
var target_size = size_zoom if is_zoomed else size_normale
# Se c'è già un'animazione in corso, fermala per evitare conflitti
if zoom_tween and zoom_tween.is_valid():
zoom_tween.kill()
zoom_tween = create_tween()
zoom_tween.set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_IN_OUT)
zoom_tween.tween_property(camera_iso, "size", target_size, tempo_zoom)
return
# --- CONTROLLI MANUALI (1-5) ---
var intervento_manuale = false

View File

@@ -5,6 +5,12 @@ extends Node3D
@export var color_pomeriggio: Color = Color(1.0, 0.6, 0.2, 1.0)
@export var color_notte: Color = Color(0.1, 0.1, 0.3, 1.0)
# --- NUOVO: Rotazione del Sole ---
@export_group("Rotazione Sole (Gradi)")
@export var rotazione_sole_mattina: Vector3 = Vector3(-15.0, 45.0, 0.0)
@export var rotazione_sole_pomeriggio: Vector3 = Vector3(-75.0, 10.0, 0.0)
@export var rotazione_sole_notte: Vector3 = Vector3(-35.0, -120.0, 0.0)
@export_group("Esposizione Generale")
@export var esposizione_mattina: float = 1.0
@export var esposizione_pomeriggio: float = 0.95
@@ -236,10 +242,11 @@ func _process(delta: float) -> void:
var base_fog_color: Color
var base_fog_density: float
var base_bloom: float
var base_esposizione: float # <--- NUOVA VARIABILE
var base_esposizione: float
var base_grad_top: Color
var base_grad_bot: Color
var base_grad_intensity: float
var base_rotazione_sole: Vector3 # <--- NUOVA VARIABILE
var tempesta_attiva = is_raining or is_actively_snowing
@@ -267,10 +274,11 @@ func _process(delta: float) -> void:
base_fog_color = colore_nebbia_mattina.lerp(colore_nebbia_pomeriggio, t)
base_fog_density = lerp(densita_nebbia_mattina, densita_nebbia_pomeriggio, t)
base_bloom = lerp(bloom_mattina, bloom_pomeriggio, t)
base_esposizione = lerp(esposizione_mattina, esposizione_pomeriggio, t) # <--- INTERPOLAZIONE MATTINA/POM
base_esposizione = lerp(esposizione_mattina, esposizione_pomeriggio, t)
base_grad_top = grad_top_mattina.lerp(grad_top_pomeriggio, t)
base_grad_bot = grad_bot_mattina.lerp(grad_bot_pomeriggio, t)
base_grad_intensity = lerp(intensita_grad_mattina, intensita_grad_pomeriggio, t)
base_rotazione_sole = rotazione_sole_mattina.lerp(rotazione_sole_pomeriggio, t) # <--- INTERPOLAZIONE ROTAZIONE
else:
var t = tempo_giorno - 2.0
base_tint = color_pomeriggio.lerp(color_notte, t)
@@ -279,10 +287,11 @@ func _process(delta: float) -> void:
base_fog_color = colore_nebbia_pomeriggio.lerp(colore_nebbia_notte, t)
base_fog_density = lerp(densita_nebbia_pomeriggio, densita_nebbia_notte, t)
base_bloom = lerp(bloom_pomeriggio, bloom_notte, t)
base_esposizione = lerp(esposizione_pomeriggio, esposizione_notte, t) # <--- INTERPOLAZIONE POM/NOTTE
base_esposizione = lerp(esposizione_pomeriggio, esposizione_notte, t)
base_grad_top = grad_top_pomeriggio.lerp(grad_top_notte, t)
base_grad_bot = grad_bot_pomeriggio.lerp(grad_bot_notte, t)
base_grad_intensity = lerp(intensita_grad_pomeriggio, intensita_grad_notte, t)
base_rotazione_sole = rotazione_sole_pomeriggio.lerp(rotazione_sole_notte, t) # <--- INTERPOLAZIONE ROTAZIONE
var final_tint = base_tint.lerp(base_tint * colore_mood_pioggia, intensita_pioggia)
var final_sky_top = base_sky_top.lerp(base_sky_top * colore_mood_pioggia, intensita_pioggia)
@@ -317,6 +326,7 @@ func _process(delta: float) -> void:
if sole:
sole.light_color = final_tint
sole.rotation_degrees = base_rotazione_sole # <--- APPLICAZIONE DELLA ROTAZIONE
var target_energy = lerp(1.0, energia_luce_notte, night_val)
# La luce del sole scala normalmente in base al meteo/notte (l'esposizione globale fa il resto del lavoro)
sole.light_energy = lerp(target_energy, target_energy * 0.4, intensita_pioggia)