material-maker/material_maker/windows/node_editor/output.gd

54 lines
1.7 KiB
GDScript

extends HBoxContainer
func _ready():
$Type.clear()
for tn in mm_io_types.type_names:
var t = mm_io_types.types[tn]
$Type.add_item(t.label)
func update_up_down_button() -> void:
var parent = get_parent()
if parent == null:
return
$Up.disabled = (get_index() == 0)
$Down.disabled = (get_index() == get_parent().get_child_count()-2)
func set_model_data(data, remaining_group_size = 0) -> int:
$Description.short_description = data.shortdesc if data.has("shortdesc") else ""
$Description.long_description = data.longdesc if data.has("longdesc") else ""
$Description.update_tooltip()
for i in range(mm_io_types.type_names.size()):
if data.has(mm_io_types.type_names[i]):
$Type.selected = i
$Value.text = data[mm_io_types.type_names[i]]
if data.has("group_size") and data.group_size > 1:
$PortGroupButton.set_state(1)
return data.group_size-1
elif remaining_group_size == 1:
$PortGroupButton.set_state(1)
return int(max(remaining_group_size-1, 0))
func get_model_data() -> Dictionary:
var data = { mm_io_types.type_names[$Type.selected]:$Value.text }
if $Description.short_description != "":
data.shortdesc = $Description.short_description
if $Description.long_description != "":
data.longdesc = $Description.long_description
if $PortGroupButton.group_size > 0:
data.group_size = $PortGroupButton.group_size
return data
func _on_Delete_pressed() -> void:
var p = get_parent()
p.remove_child(self)
p.update_up_down_buttons()
queue_free()
func _on_Up_pressed() -> void:
get_parent().move_child(self, get_index() - 1)
get_parent().update_up_down_buttons()
func _on_Down_pressed() -> void:
get_parent().move_child(self, get_index() + 1)
get_parent().update_up_down_buttons()