Files
tgcc-artest/Scripts/palette_manager.gd
Matteo Sonaglioni f7b334b21c first commit
2026-03-10 23:54:57 +01:00

50 lines
1.6 KiB
GDScript

extends Node
@export_group("Gestione Palette")
@export var materiale_da_cambiare: ShaderMaterial # Trascina qui il tuo materiale dall'Inspector
@export var tempo_transizione: float = 2.0 # Quanto dura la sfumatura (in secondi)
@export var valore_riga_2: float = 0.2 # Il valore target della seconda riga
var palette_spostata: bool = false
var tween_palette: Tween
func _input(event: InputEvent) -> void:
# Usiamo il tasto P (Palette) per innescare l'effetto
if event is InputEventKey and event.pressed and not event.echo:
if event.keycode == KEY_P:
_cambia_palette_fluida()
func _cambia_palette_fluida() -> void:
if materiale_da_cambiare == null:
print("ERRORE: Non hai assegnato il materiale nell'Inspector!")
return
# Invertiamo lo stato
palette_spostata = !palette_spostata
# Decidiamo dove deve arrivare lo slider
var target_shift = valore_riga_2 if palette_spostata else 0.0
# Se c'è già un'animazione in corso (es. hai premuto due volte velocemente), la fermiamo
if tween_palette and tween_palette.is_valid():
tween_palette.kill()
# Creiamo la nuova animazione fluida
tween_palette = create_tween()
# Usiamo SINE e IN_OUT per renderla morbidissima in partenza e in arrivo
tween_palette.set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_IN_OUT)
# Anima il parametro dello shader
tween_palette.tween_property(
materiale_da_cambiare,
"shader_parameter/palette_shift_y", # Sintassi magica per parlare con lo shader
target_shift,
tempo_transizione
)
if palette_spostata:
print("Transizione verso la Palette 2 iniziata...")
else:
print("Ritorno alla Palette 1 originale...")