material-maker/addons/material_maker/nodes/remote.gd
RodZill4 95a737029a Started adding the "remote node"
Started adding the "remote" node, that can control important parameters of the graph and save/restore configurations of groups of parameters. This should help creating easily configurable materials.

Added new "mosaic" example
2018-09-08 12:25:28 +02:00

64 lines
1.7 KiB
GDScript

tool
extends "res://addons/material_maker/node_base.gd"
const LinkedControl = preload("res://addons/material_maker/widgets/linked_widgets/linked_control.tscn")
const ConfigControl = preload("res://addons/material_maker/widgets/linked_widgets/config_control.tscn")
func _ready():
pass
func _get_shader_code(uv):
var rv = { defs="", code="" }
rv.rgb = "vec3(1.0)"
return rv
func add_control(widget):
var controls = widget.get_associated_controls()
$Controls.add_child(controls.label)
$Controls.add_child(widget)
$Controls.add_child(controls.buttons)
func _on_AddLink_pressed():
var widget = LinkedControl.instance()
add_control(widget)
widget.pick_linked()
func _on_AddConfig_pressed():
var widget = ConfigControl.instance()
add_control(widget)
widget.pick_linked()
func _on_Remote_resize_request(new_minsize):
print("_on_Remote_resize_request")
rect_size = new_minsize
func _on_HBoxContainer_minimum_size_changed():
print("_on_HBoxContainer_minimum_size_changed "+str($HBoxContainer.rect_min_size))
func serialize():
var widgets = []
for i in range(1, $Controls.get_child_count(), 3):
widgets.append($Controls.get_child(i).serialize())
var data = { type="remote", node_position={x=offset.x,y=offset.y}, editable=true, widgets=widgets }
return data
func deserialize(data):
if data.has("node_position"):
offset.x = data.node_position.x
offset.y = data.node_position.y
call_deferred("do_deserialize", data)
func do_deserialize(data):
if data.has("widgets"):
for w in data.widgets:
var widget
if w.type == "linked_control":
widget = LinkedControl.instance()
elif w.type == "config_control":
widget = ConfigControl.instance()
else:
continue
add_control(widget)
widget.deserialize(w)