extends Node3D

# Funzione chiamata dal treno per iniettare il colore scelto
func imposta_colore(colore_target: Color) -> void:
	# Cerchiamo i 3 nodi specifici per nome
	# Assicurati che i nomi nella tua scena siano ESATTAMENTE questi!
	var razzo = $"1_RazzoIniziale"
	var esplosione = $"2_EsplosionePrincipale"
	var scie = $"3_ScieCadenti"

	# 1. Il Razzo iniziale lo vogliamo BIANCO BRILLANTE (la "testa")
	# Usiamo un bianco "sovraccarico" (valori > 1) per farlo brillare di più
	_colora_nodo_particellare(razzo, Color(1.5, 1.5, 1.5))

	# 2. L'esplosione principale la vogliamo BIANCA (i punti centrali dello scoppio)
	_colora_nodo_particellare(esplosione, Color(1.2, 1.2, 1.2))

	# 3. Le scie che cadono le vogliamo del COLORE SCELTO dal treno
	_colora_nodo_particellare(scie, colore_target)

# Funzione helper per duplicare e colorare il materiale in modo sicuro
func _colora_nodo_particellare(nodo: GPUParticles3D, colore_da_applicare: Color) -> void:
	if nodo and nodo.draw_pass_1:
		var mesh = nodo.draw_pass_1 as QuadMesh
		if mesh and mesh.material:
			# --- IL SEGRETO E' QUI! ---
			# Duplichiamo il materiale. Ora questo nodo ha una sua copia privata
			# e non influenzerà gli altri fuochi d'artificio.
			var mat_unico = mesh.material.duplicate() as StandardMaterial3D
			
			# Impostiamo il colore e ci assicuriamo che brilli
			mat_unico.albedo_color = colore_da_applicare
			mat_unico.blend_mode = BaseMaterial3D.BLEND_MODE_ADD # Fondamentale per l'effetto luce
			mat_unico.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED
			
			# Assegniamo il nuovo materiale unico alla mesh
			mesh.material = mat_unico

# Funzione per far partire l'effetto
func accendi() -> void:
	var razzo = $"1_RazzoIniziale"
	if razzo:
		razzo.emitting = true # Accende solo la miccia iniziale
		
	# Tempo di vita totale aumentato per dare tempo alle scie di cadere
	await get_tree().create_timer(6.0).timeout
	queue_free()
