@tool
extends MultiMeshInstance3D

# Trascina qui la MeshInstance3D che rappresenta il volume della tua chioma
@export var mesh_volume: MeshInstance3D

# Clicca su questa casella nell'Inspector per generare le foglie
@export var genera_foglie: bool = false:
	set(val):
		if val:
			popola_chioma()
		genera_foglie = false # Resetta il pulsante

# Scala delle singole foglie
@export var scala_foglie: Vector3 = Vector3(1, 1, 1)

func popola_chioma():
	if not mesh_volume or not mesh_volume.mesh:
		print("Errore: Assegna una MeshInstance3D valida a 'Mesh Volume'.")
		return
		
	if not multimesh:
		print("Errore: Il nodo MultiMeshInstance3D non ha una risorsa MultiMesh assegnata.")
		return

	# Assicurati che il formato sia 3D per posizioni, rotazioni e scale
	multimesh.transform_format = MultiMesh.TRANSFORM_3D

	var mdt = MeshDataTool.new()
	# Crea i dati dalla prima superficie della mesh (indice 0)
	mdt.create_from_surface(mesh_volume.mesh, 0)
	
	var numero_facce = mdt.get_face_count()
	multimesh.instance_count = numero_facce
	
	print("Generazione di ", numero_facce, " foglie...")
	
	for i in range(numero_facce):
		# Ottieni i tre vertici che formano la faccia
		var v1 = mdt.get_vertex(mdt.get_face_vertex(i, 0))
		var v2 = mdt.get_vertex(mdt.get_face_vertex(i, 1))
		var v3 = mdt.get_vertex(mdt.get_face_vertex(i, 2))
		
		# Calcola il centro della faccia
		var centro_faccia = (v1 + v2 + v3) / 3.0
		
		# Crea una trasformazione con posizione, rotazione casuale e scala
		var transform = Transform3D()
		transform.origin = centro_faccia
		
		# Rotazione casuale per un look naturale
		transform = transform.rotated(Vector3.UP, randf() * TAU) # Rotazione attorno all'asse Y
		transform = transform.rotated(Vector3.RIGHT, randf() * TAU) # Rotazione attorno all'asse X
		transform = transform.rotated(Vector3.FORWARD, randf() * TAU) # Rotazione attorno all'asse Z
		
		# Applica la scala
		transform = transform.scaled(scala_foglie)
		
		# Imposta la trasformazione per questa istanza nel MultiMesh
		multimesh.set_instance_transform(i, transform)
		
	print("Foglie generate con successo!")
