# (c) 2023-present Eroax
# (c) 2023-present Yagich
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
extends DeckNode


func _init() -> void:
	name = "Compose Vector"
	node_type = "vector_compose"
	description = "Returns a vector from two numeric inputs."

	add_input_port(
		DeckType.Types.NUMERIC,
		"X",
		"field"
	)
	add_input_port(
		DeckType.Types.NUMERIC,
		"Y",
		"field"
	)

	add_output_port(
		DeckType.Types.DICTIONARY,
		"Vector"
	)

func _receive(port : int, data : Variant) -> void:
	
	var x
	var y
	if port == 0:
		
		x = data
		y = await resolve_input_port_value_async(1)
		
	else:
		
		y = data
		x = await resolve_input_port_value_async(0)
		
	
	send(0, {"x" : float(x), "y" : float(y)})
	

func _value_request(_on_port: int) -> Dictionary:
	var x = float(await resolve_input_port_value_async(0))
	var y = float(await resolve_input_port_value_async(1))
	return {"x": x, "y": y}