@tool
extends Node3D

## 비주얼 피팅 샌드박스 헬퍼 스크립트 (FitSandbox)
## 에디터 상에서 3D 노드의 오프셋(위치/회전/크기)을 맞춘 후, GDScript용 Vector3 코드를 즉시 추출해 줍니다.

@export_group("Transform Exporter")
## 이 값을 True로 체크하면 지정된 target_node의 Transform 정보를 출력합니다. (체크 후 자동 리셋됨)
@export var export_transform_code: bool = false:
	set(val):
		if val:
			_export_selected_transform()

## 오프셋을 추출할 대상 노드 (예: 손 하위에 배치된 무기 MeshInstance3D 등)
@export var target_node: Node3D

func _export_selected_transform() -> void:
	if not target_node:
		push_warning("FitSandbox: Target Node가 지정되지 않았습니다. 인스펙터에서 target_node를 할당해 주세요.")
		return
		
	var pos: Vector3 = target_node.position
	var rot_deg: Vector3 = target_node.rotation_degrees
	var rot_rad: Vector3 = target_node.rotation
	var scl: Vector3 = target_node.scale
	
	print("\n==================================================")
	print("   FIT SANDBOX OFFSET EXPORT (Target: %s)" % target_node.name)
	print("==================================================")
	print("# GDScript 붙여넣기용 코드:")
	print("position = Vector3(%.4f, %.4f, %.4f)" % [pos.x, pos.y, pos.z])
	print("rotation = Vector3(%.4f, %.4f, %.4f)  # Degrees: (%.1f, %.1f, %.1f)" % [rot_rad.x, rot_rad.y, rot_rad.z, rot_deg.x, rot_deg.y, rot_deg.z])
	print("scale = Vector3(%.4f, %.4f, %.4f)" % [scl.x, scl.y, scl.z])
	print("==================================================\n")
