mirror of
https://github.com/Relintai/material-maker.git
synced 2025-04-25 18:34:58 +02:00
Remote related fixes
This commit is contained in:
parent
027a311554
commit
f512b977c6
@ -66,7 +66,11 @@ func set_parameter(p, v):
|
|||||||
var configurations = widget.configurations.keys()
|
var configurations = widget.configurations.keys()
|
||||||
configurations.sort()
|
configurations.sort()
|
||||||
for w in widget.configurations[configurations[v]]:
|
for w in widget.configurations[configurations[v]]:
|
||||||
parent.get_node(w.node).set_parameter(w.widget, w.value)
|
var node = parent.get_node(w.node)
|
||||||
|
if node != null:
|
||||||
|
print(w.value)
|
||||||
|
print(MMType.deserialize_value(w.value))
|
||||||
|
node.set_parameter(w.widget, MMType.deserialize_value(w.value))
|
||||||
else:
|
else:
|
||||||
# incorrect configuration index
|
# incorrect configuration index
|
||||||
print("error: incorrect config control parameter value")
|
print("error: incorrect config control parameter value")
|
||||||
@ -126,9 +130,10 @@ func update_configuration(index, config_name):
|
|||||||
var parent = get_parent()
|
var parent = get_parent()
|
||||||
for w in widget.linked_widgets:
|
for w in widget.linked_widgets:
|
||||||
var g = parent.get_node(w.node)
|
var g = parent.get_node(w.node)
|
||||||
var value = g.parameters[w.widget]
|
if g != null:
|
||||||
if typeof(value) == TYPE_ARRAY or typeof(value) == TYPE_DICTIONARY:
|
print(g.parameters[w.widget])
|
||||||
value = value.duplicate()
|
var value = MMType.serialize_value(g.parameters[w.widget])
|
||||||
|
print(value)
|
||||||
c.push_back({ node=w.node, widget=w.widget, value=value })
|
c.push_back({ node=w.node, widget=w.widget, value=value })
|
||||||
widget.configurations[config_name] = c
|
widget.configurations[config_name] = c
|
||||||
emit_signal("parameter_changed", "", null)
|
emit_signal("parameter_changed", "", null)
|
||||||
|
@ -51,7 +51,7 @@ static func create_gen(data) -> MMGenBase:
|
|||||||
generator.set_shader_model(data.model_data)
|
generator.set_shader_model(data.model_data)
|
||||||
elif data.has("widgets"):
|
elif data.has("widgets"):
|
||||||
generator = MMGenRemote.new()
|
generator = MMGenRemote.new()
|
||||||
generator.set_widgets(data.widgets)
|
generator.set_widgets(data.widgets.duplicate(true))
|
||||||
elif data.has("type"):
|
elif data.has("type"):
|
||||||
if data.type == "material":
|
if data.type == "material":
|
||||||
generator = MMGenMaterial.new()
|
generator = MMGenMaterial.new()
|
||||||
|
@ -259,6 +259,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"tree_item":"Miscellaneous/Remote",
|
"tree_item":"Miscellaneous/Remote",
|
||||||
"type":"remote"
|
"type":"remote",
|
||||||
|
"widgets":[]
|
||||||
}
|
}
|
||||||
]}
|
]}
|
@ -5,7 +5,7 @@ class_name MMGraphNodeGeneric
|
|||||||
var generator = null setget set_generator
|
var generator = null setget set_generator
|
||||||
|
|
||||||
var controls = {}
|
var controls = {}
|
||||||
var ignore_parameter_change = false
|
var ignore_parameter_change = ""
|
||||||
|
|
||||||
func set_generator(g):
|
func set_generator(g):
|
||||||
generator = g
|
generator = g
|
||||||
@ -19,7 +19,7 @@ func on_offset_changed():
|
|||||||
generator.position = offset
|
generator.position = offset
|
||||||
|
|
||||||
func on_parameter_changed(p, v):
|
func on_parameter_changed(p, v):
|
||||||
if ignore_parameter_change:
|
if ignore_parameter_change == p:
|
||||||
return
|
return
|
||||||
var o = controls[p]
|
var o = controls[p]
|
||||||
if o is LineEdit:
|
if o is LineEdit:
|
||||||
@ -34,7 +34,7 @@ func on_parameter_changed(p, v):
|
|||||||
o.pressed = v
|
o.pressed = v
|
||||||
elif o is ColorPickerButton:
|
elif o is ColorPickerButton:
|
||||||
o.color = MMType.deserialize_value(v)
|
o.color = MMType.deserialize_value(v)
|
||||||
elif o is Control and o.filename == "res://addons/material_maker/widgets/gradient_editor.tscn":
|
elif o is MMGradientEditor:
|
||||||
var gradient : MMGradient = MMGradient.new()
|
var gradient : MMGradient = MMGradient.new()
|
||||||
gradient.deserialize(v)
|
gradient.deserialize(v)
|
||||||
o.value = gradient
|
o.value = gradient
|
||||||
@ -72,27 +72,27 @@ func update_shaders():
|
|||||||
get_parent().send_changed_signal()
|
get_parent().send_changed_signal()
|
||||||
|
|
||||||
func _on_text_changed(new_text, variable):
|
func _on_text_changed(new_text, variable):
|
||||||
ignore_parameter_change = true
|
ignore_parameter_change = variable
|
||||||
generator.set_parameter(variable, float(new_text))
|
generator.set_parameter(variable, float(new_text))
|
||||||
ignore_parameter_change = false
|
ignore_parameter_change = ""
|
||||||
update_shaders()
|
update_shaders()
|
||||||
|
|
||||||
func _on_value_changed(new_value, variable):
|
func _on_value_changed(new_value, variable):
|
||||||
ignore_parameter_change = true
|
ignore_parameter_change = variable
|
||||||
generator.set_parameter(variable, new_value)
|
generator.set_parameter(variable, new_value)
|
||||||
ignore_parameter_change = false
|
ignore_parameter_change = ""
|
||||||
update_shaders()
|
update_shaders()
|
||||||
|
|
||||||
func _on_color_changed(new_color, variable):
|
func _on_color_changed(new_color, variable):
|
||||||
ignore_parameter_change = true
|
ignore_parameter_change = variable
|
||||||
generator.set_parameter(variable, new_color)
|
generator.set_parameter(variable, new_color)
|
||||||
ignore_parameter_change = false
|
ignore_parameter_change = ""
|
||||||
update_shaders()
|
update_shaders()
|
||||||
|
|
||||||
func _on_gradient_changed(new_gradient, variable):
|
func _on_gradient_changed(new_gradient, variable):
|
||||||
ignore_parameter_change = true
|
ignore_parameter_change = variable
|
||||||
generator.set_parameter(variable, new_gradient)
|
generator.set_parameter(variable, MMType.serialize_value(new_gradient))
|
||||||
ignore_parameter_change = false
|
ignore_parameter_change = ""
|
||||||
update_shaders()
|
update_shaders()
|
||||||
|
|
||||||
func create_parameter_control(p : Dictionary):
|
func create_parameter_control(p : Dictionary):
|
||||||
@ -240,6 +240,7 @@ func edit_generator():
|
|||||||
func update_generator(shader_model):
|
func update_generator(shader_model):
|
||||||
generator.set_shader_model(shader_model)
|
generator.set_shader_model(shader_model)
|
||||||
update_node()
|
update_node()
|
||||||
|
update_shaders()
|
||||||
|
|
||||||
func load_generator():
|
func load_generator():
|
||||||
var dialog = FileDialog.new()
|
var dialog = FileDialog.new()
|
||||||
|
@ -2,24 +2,30 @@ tool
|
|||||||
extends MMGraphNodeGeneric
|
extends MMGraphNodeGeneric
|
||||||
class_name MMGraphNodeRemote
|
class_name MMGraphNodeRemote
|
||||||
|
|
||||||
|
var links = {}
|
||||||
|
|
||||||
|
onready var grid = $Controls
|
||||||
|
|
||||||
func add_control(text, control):
|
func add_control(text, control):
|
||||||
var index = $Controls.get_child_count() / 4
|
var index = grid.get_child_count() / 4
|
||||||
var label = preload("res://addons/material_maker/widgets/linked_widgets/editable_label.tscn").instance()
|
var label = preload("res://addons/material_maker/widgets/linked_widgets/editable_label.tscn").instance()
|
||||||
label.set_text(text)
|
label.set_text(text)
|
||||||
$Controls.add_child(label)
|
grid.add_child(label)
|
||||||
$Controls.add_child(control)
|
grid.add_child(control)
|
||||||
|
control.connect("mouse_entered", self, "on_enter_widget", [ control ])
|
||||||
|
control.connect("mouse_exited", self, "on_exit_widget", [ control ])
|
||||||
var button = Button.new()
|
var button = Button.new()
|
||||||
button.icon = preload("res://addons/material_maker/icons/link.png")
|
button.icon = preload("res://addons/material_maker/icons/link.png")
|
||||||
$Controls.add_child(button)
|
grid.add_child(button)
|
||||||
button.connect("pressed", self, "_on_Link_pressed", [ index ])
|
button.connect("pressed", self, "_on_Link_pressed", [ index ])
|
||||||
button = Button.new()
|
button = Button.new()
|
||||||
button.icon = preload("res://addons/material_maker/icons/remove.png")
|
button.icon = preload("res://addons/material_maker/icons/remove.png")
|
||||||
$Controls.add_child(button)
|
grid.add_child(button)
|
||||||
button.connect("pressed", generator, "remove_parameter", [ index ])
|
button.connect("pressed", generator, "remove_parameter", [ index ])
|
||||||
|
|
||||||
func update_node():
|
func update_node():
|
||||||
var i : int = 0
|
var i : int = 0
|
||||||
for c in $Controls.get_children():
|
for c in grid.get_children():
|
||||||
c.queue_free()
|
c.queue_free()
|
||||||
yield(get_tree(), "idle_frame")
|
yield(get_tree(), "idle_frame")
|
||||||
controls = {}
|
controls = {}
|
||||||
@ -49,7 +55,7 @@ func _on_value_changed(new_value, variable):
|
|||||||
var widget = generator.widgets[param_index]
|
var widget = generator.widgets[param_index]
|
||||||
if widget.type == "config_control":
|
if widget.type == "config_control":
|
||||||
var configuration_count = widget.configurations.size()
|
var configuration_count = widget.configurations.size()
|
||||||
var control = $Controls.get_child(param_index*4+1)
|
var control = grid.get_child(param_index*4+1)
|
||||||
if new_value < configuration_count:
|
if new_value < configuration_count:
|
||||||
._on_value_changed(new_value, variable)
|
._on_value_changed(new_value, variable)
|
||||||
var current = control.get_item_text(new_value)
|
var current = control.get_item_text(new_value)
|
||||||
@ -92,7 +98,7 @@ func _on_AddConfig_pressed():
|
|||||||
|
|
||||||
func _on_Link_pressed(index):
|
func _on_Link_pressed(index):
|
||||||
var link = MMNodeLink.new(get_parent())
|
var link = MMNodeLink.new(get_parent())
|
||||||
link.pick($Controls.get_child(index*4+1), generator, index)
|
link.pick(grid.get_child(index*4+1), generator, index)
|
||||||
|
|
||||||
func _on_Remote_resize_request(new_minsize):
|
func _on_Remote_resize_request(new_minsize):
|
||||||
print("_on_Remote_resize_request")
|
print("_on_Remote_resize_request")
|
||||||
@ -102,7 +108,32 @@ func _on_HBoxContainer_minimum_size_changed():
|
|||||||
print("_on_HBoxContainer_minimum_size_changed "+str($HBoxContainer.rect_min_size))
|
print("_on_HBoxContainer_minimum_size_changed "+str($HBoxContainer.rect_min_size))
|
||||||
|
|
||||||
func on_parameter_changed(p, v):
|
func on_parameter_changed(p, v):
|
||||||
|
print("remote.parameter_changed "+str(p)+" "+str(v))
|
||||||
if p == "":
|
if p == "":
|
||||||
update_node()
|
update_node()
|
||||||
else:
|
else:
|
||||||
.on_parameter_changed(p, v)
|
.on_parameter_changed(p, v)
|
||||||
|
|
||||||
|
func on_enter_widget(widget):
|
||||||
|
print("enter_widget "+widget.name)
|
||||||
|
var param_index = widget.name.trim_prefix("param").to_int()
|
||||||
|
var w = generator.widgets[param_index]
|
||||||
|
var new_links = []
|
||||||
|
for l in w.linked_widgets:
|
||||||
|
var graph_node = get_parent().get_node("node_"+l.node)
|
||||||
|
if graph_node != null:
|
||||||
|
var control = graph_node.controls[l.widget]
|
||||||
|
if control != null:
|
||||||
|
var link = MMNodeLink.new(get_parent())
|
||||||
|
link.show_link(widget, control)
|
||||||
|
new_links.push_back(link)
|
||||||
|
# free existing links if any
|
||||||
|
on_exit_widget(widget)
|
||||||
|
# store new links
|
||||||
|
links[widget] = new_links
|
||||||
|
|
||||||
|
func on_exit_widget(widget):
|
||||||
|
if links.has(widget):
|
||||||
|
for l in links[widget]:
|
||||||
|
l.queue_free()
|
||||||
|
links.erase(widget)
|
||||||
|
@ -53,5 +53,7 @@ margin_right = 60.0
|
|||||||
margin_bottom = 22.0
|
margin_bottom = 22.0
|
||||||
hint_tooltip = "Add configurations"
|
hint_tooltip = "Add configurations"
|
||||||
icon = ExtResource( 3 )
|
icon = ExtResource( 3 )
|
||||||
|
[connection signal="close_request" from="." to="." method="on_close_request"]
|
||||||
|
[connection signal="offset_changed" from="." to="." method="on_offset_changed"]
|
||||||
[connection signal="pressed" from="HBoxContainer/AddLink" to="." method="_on_AddLink_pressed"]
|
[connection signal="pressed" from="HBoxContainer/AddLink" to="." method="_on_AddLink_pressed"]
|
||||||
[connection signal="pressed" from="HBoxContainer/AddConfig" to="." method="_on_AddConfig_pressed"]
|
[connection signal="pressed" from="HBoxContainer/AddConfig" to="." method="_on_AddConfig_pressed"]
|
||||||
|
@ -100,3 +100,5 @@ func deserialize(v):
|
|||||||
clear()
|
clear()
|
||||||
for p in v.points:
|
for p in v.points:
|
||||||
add_point(p.v, p.c)
|
add_point(p.v, p.c)
|
||||||
|
else:
|
||||||
|
print("Cannot deserialize gradient")
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
tool
|
tool
|
||||||
extends Control
|
extends Control
|
||||||
|
class_name MMGradientEditor
|
||||||
|
|
||||||
class GradientCursor:
|
class GradientCursor:
|
||||||
extends ColorRect
|
extends ColorRect
|
||||||
@ -50,9 +51,10 @@ func _ready():
|
|||||||
set_value(MMGradient.new())
|
set_value(MMGradient.new())
|
||||||
|
|
||||||
func set_value(v):
|
func set_value(v):
|
||||||
|
print("GradientEditor.set_value")
|
||||||
value = v
|
value = v
|
||||||
for c in get_children():
|
for c in get_children():
|
||||||
if c != $Gradient && c != $Background:
|
if c != $Gradient and c != $Background:
|
||||||
remove_child(c)
|
remove_child(c)
|
||||||
c.free()
|
c.free()
|
||||||
for p in value.points:
|
for p in value.points:
|
||||||
|
@ -2,21 +2,17 @@
|
|||||||
|
|
||||||
[ext_resource path="res://addons/material_maker/widgets/gradient_editor.gd" type="Script" id=1]
|
[ext_resource path="res://addons/material_maker/widgets/gradient_editor.gd" type="Script" id=1]
|
||||||
|
|
||||||
[sub_resource type="Shader" id=3]
|
[sub_resource type="Shader" id=1]
|
||||||
|
|
||||||
code = "shader_type canvas_item;
|
code = "shader_type canvas_item;
|
||||||
|
|
||||||
void fragment() {
|
void fragment() {
|
||||||
COLOR = vec4(vec3(2.0*fract(0.5*(floor(10.0*UV.x)+floor(2.0*UV.y)))), 1.0);
|
COLOR = vec4(vec3(2.0*fract(0.5*(floor(10.0*UV.x)+floor(2.0*UV.y)))), 1.0);
|
||||||
}"
|
}"
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id=4]
|
[sub_resource type="ShaderMaterial" id=2]
|
||||||
|
shader = SubResource( 1 )
|
||||||
render_priority = 0
|
|
||||||
shader = SubResource( 3 )
|
|
||||||
|
|
||||||
[sub_resource type="Shader" id=1]
|
|
||||||
|
|
||||||
|
[sub_resource type="Shader" id=3]
|
||||||
code = "shader_type canvas_item;
|
code = "shader_type canvas_item;
|
||||||
vec4 gradient(float x) {
|
vec4 gradient(float x) {
|
||||||
if (x < 0.000000000) {
|
if (x < 0.000000000) {
|
||||||
@ -28,113 +24,42 @@ vec4 gradient(float x) {
|
|||||||
}
|
}
|
||||||
void fragment() { COLOR = gradient(UV.x); }"
|
void fragment() { COLOR = gradient(UV.x); }"
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id=2]
|
[sub_resource type="ShaderMaterial" id=4]
|
||||||
|
shader = SubResource( 3 )
|
||||||
render_priority = 0
|
|
||||||
shader = SubResource( 1 )
|
|
||||||
|
|
||||||
[sub_resource type="Theme" id=5]
|
[sub_resource type="Theme" id=5]
|
||||||
|
|
||||||
|
|
||||||
[node name="Control" type="Control"]
|
[node name="Control" type="Control"]
|
||||||
|
|
||||||
anchor_left = 0.0
|
|
||||||
anchor_top = 0.0
|
|
||||||
anchor_right = 0.0
|
|
||||||
anchor_bottom = 0.0
|
|
||||||
margin_right = 120.0
|
margin_right = 120.0
|
||||||
margin_bottom = 30.0
|
margin_bottom = 30.0
|
||||||
rect_min_size = Vector2( 120, 30 )
|
rect_min_size = Vector2( 120, 30 )
|
||||||
rect_pivot_offset = Vector2( 0, 0 )
|
|
||||||
rect_clip_content = false
|
|
||||||
mouse_filter = 0
|
|
||||||
mouse_default_cursor_shape = 0
|
|
||||||
size_flags_horizontal = 1
|
|
||||||
size_flags_vertical = 1
|
|
||||||
script = ExtResource( 1 )
|
script = ExtResource( 1 )
|
||||||
_sections_unfolded = [ "Rect" ]
|
|
||||||
|
|
||||||
[node name="Background" type="ColorRect" parent="." index="0"]
|
|
||||||
|
|
||||||
material = SubResource( 4 )
|
|
||||||
anchor_left = 0.0
|
|
||||||
anchor_top = 0.0
|
|
||||||
anchor_right = 0.0
|
|
||||||
anchor_bottom = 0.0
|
|
||||||
margin_right = 120.0
|
|
||||||
margin_bottom = 20.0
|
|
||||||
rect_min_size = Vector2( 120, 20 )
|
|
||||||
rect_pivot_offset = Vector2( 0, 0 )
|
|
||||||
rect_clip_content = false
|
|
||||||
mouse_filter = 0
|
|
||||||
mouse_default_cursor_shape = 0
|
|
||||||
size_flags_horizontal = 1
|
|
||||||
size_flags_vertical = 1
|
|
||||||
color = Color( 1, 1, 1, 1 )
|
|
||||||
_sections_unfolded = [ "Material", "Rect" ]
|
|
||||||
|
|
||||||
[node name="Gradient" type="ColorRect" parent="." index="1"]
|
|
||||||
|
|
||||||
|
[node name="Background" type="ColorRect" parent="."]
|
||||||
material = SubResource( 2 )
|
material = SubResource( 2 )
|
||||||
anchor_left = 0.0
|
|
||||||
anchor_top = 0.0
|
|
||||||
anchor_right = 0.0
|
|
||||||
anchor_bottom = 0.0
|
|
||||||
margin_right = 120.0
|
margin_right = 120.0
|
||||||
margin_bottom = 20.0
|
margin_bottom = 20.0
|
||||||
rect_min_size = Vector2( 120, 20 )
|
rect_min_size = Vector2( 120, 20 )
|
||||||
rect_pivot_offset = Vector2( 0, 0 )
|
mouse_filter = 2
|
||||||
rect_clip_content = false
|
|
||||||
mouse_filter = 0
|
[node name="Gradient" type="ColorRect" parent="."]
|
||||||
mouse_default_cursor_shape = 0
|
material = SubResource( 4 )
|
||||||
size_flags_horizontal = 1
|
margin_right = 120.0
|
||||||
size_flags_vertical = 1
|
margin_bottom = 20.0
|
||||||
|
rect_min_size = Vector2( 120, 20 )
|
||||||
|
mouse_filter = 2
|
||||||
theme = SubResource( 5 )
|
theme = SubResource( 5 )
|
||||||
color = Color( 1, 1, 1, 1 )
|
|
||||||
_sections_unfolded = [ "Material", "Theme" ]
|
|
||||||
|
|
||||||
[node name="Popup" type="Popup" parent="Gradient" index="0"]
|
[node name="Popup" type="Popup" parent="Gradient"]
|
||||||
|
|
||||||
visible = false
|
|
||||||
anchor_left = 0.0
|
|
||||||
anchor_top = 0.0
|
|
||||||
anchor_right = 0.0
|
|
||||||
anchor_bottom = 0.0
|
|
||||||
margin_left = 47.0
|
margin_left = 47.0
|
||||||
margin_top = 33.0
|
margin_top = 33.0
|
||||||
margin_right = 353.0
|
margin_right = 353.0
|
||||||
margin_bottom = 475.0
|
margin_bottom = 475.0
|
||||||
rect_pivot_offset = Vector2( 0, 0 )
|
|
||||||
rect_clip_content = false
|
|
||||||
mouse_filter = 0
|
|
||||||
mouse_default_cursor_shape = 0
|
|
||||||
size_flags_horizontal = 1
|
|
||||||
size_flags_vertical = 1
|
|
||||||
popup_exclusive = false
|
|
||||||
|
|
||||||
[node name="ColorPicker" type="ColorPicker" parent="Gradient/Popup" index="0"]
|
[node name="ColorPicker" type="ColorPicker" parent="Gradient/Popup"]
|
||||||
|
|
||||||
anchor_left = 0.0
|
|
||||||
anchor_top = 0.0
|
|
||||||
anchor_right = 0.0
|
|
||||||
anchor_bottom = 0.0
|
|
||||||
margin_left = 4.0
|
margin_left = 4.0
|
||||||
margin_top = 4.0
|
margin_top = 4.0
|
||||||
margin_right = 4.0
|
margin_right = 4.0
|
||||||
margin_bottom = 4.0
|
margin_bottom = 4.0
|
||||||
rect_scale = Vector2( 0.75, 0.75 )
|
rect_scale = Vector2( 0.75, 0.75 )
|
||||||
rect_pivot_offset = Vector2( 0, 0 )
|
|
||||||
rect_clip_content = false
|
|
||||||
mouse_filter = 1
|
|
||||||
mouse_default_cursor_shape = 0
|
|
||||||
size_flags_horizontal = 1
|
|
||||||
size_flags_vertical = 1
|
|
||||||
alignment = 0
|
|
||||||
color = Color( 1, 1, 1, 1 )
|
|
||||||
edit_alpha = true
|
|
||||||
raw_mode = false
|
|
||||||
_sections_unfolded = [ "Rect" ]
|
|
||||||
|
|
||||||
[connection signal="popup_hide" from="Gradient/Popup" to="." method="_on_Popup_popup_hide"]
|
[connection signal="popup_hide" from="Gradient/Popup" to="." method="_on_Popup_popup_hide"]
|
||||||
|
|
||||||
|
|
||||||
|
@ -46,8 +46,8 @@ func find_control(gp):
|
|||||||
return null
|
return null
|
||||||
|
|
||||||
func _draw():
|
func _draw():
|
||||||
draw_rect(Rect2(rect_position, rect_size), Color(1.0, 0.0, 0.0, 0.2))
|
#draw_rect(Rect2(rect_position, rect_size), Color(1.0, 0.0, 0.0, 0.2))
|
||||||
draw_rect(Rect2(rect_position, rect_size), Color(1.0, 1.0, 0.0), false)
|
#draw_rect(Rect2(rect_position, rect_size), Color(1.0, 1.0, 0.0), false)
|
||||||
var start = get_global_transform().xform_inv(source.get_global_transform().xform(0.5*source.rect_size))
|
var start = get_global_transform().xform_inv(source.get_global_transform().xform(0.5*source.rect_size))
|
||||||
var color = Color(1, 0.5, 0.5, 0.5)
|
var color = Color(1, 0.5, 0.5, 0.5)
|
||||||
var rect
|
var rect
|
||||||
|
@ -84,6 +84,11 @@ _global_script_classes=[ {
|
|||||||
"language": "GDScript",
|
"language": "GDScript",
|
||||||
"path": "res://addons/material_maker/types/gradient.gd"
|
"path": "res://addons/material_maker/types/gradient.gd"
|
||||||
}, {
|
}, {
|
||||||
|
"base": "Control",
|
||||||
|
"class": "MMGradientEditor",
|
||||||
|
"language": "GDScript",
|
||||||
|
"path": "res://addons/material_maker/widgets/gradient_editor.gd"
|
||||||
|
}, {
|
||||||
"base": "GraphNode",
|
"base": "GraphNode",
|
||||||
"class": "MMGraphNodeGeneric",
|
"class": "MMGraphNodeGeneric",
|
||||||
"language": "GDScript",
|
"language": "GDScript",
|
||||||
@ -120,6 +125,7 @@ _global_script_class_icons={
|
|||||||
"MMGenSwitch": "",
|
"MMGenSwitch": "",
|
||||||
"MMGenTexture": "",
|
"MMGenTexture": "",
|
||||||
"MMGradient": "",
|
"MMGradient": "",
|
||||||
|
"MMGradientEditor": "",
|
||||||
"MMGraphNodeGeneric": "",
|
"MMGraphNodeGeneric": "",
|
||||||
"MMGraphNodeRemote": "",
|
"MMGraphNodeRemote": "",
|
||||||
"MMNodeLink": "",
|
"MMNodeLink": "",
|
||||||
|
Loading…
Reference in New Issue
Block a user