mirror of
https://github.com/Relintai/broken_seals.git
synced 2025-01-01 01:37:12 +01:00
Now add slot universal methods in MMGraphNode only take an universal property as argument. Also added an universal texture slot. Had to add init_properties and _init_properties, and had to change register_methods to _register_methods in subclasses.
This commit is contained in:
parent
8654865b1b
commit
e31aedbb1b
@ -21,6 +21,26 @@ func add_slot_texture(input_type : int, output_type : int, getter : String, sett
|
|||||||
|
|
||||||
return slot_idx
|
return slot_idx
|
||||||
|
|
||||||
|
func add_slot_texture_universal(property : MMNodeUniversalProperty) -> int:
|
||||||
|
var t : TextureRect = TextureRect.new()
|
||||||
|
|
||||||
|
var slot_idx : int = add_slot(property.input_slot_type, property.output_slot_type, "", "", t)
|
||||||
|
|
||||||
|
var img : Image = property.get_active_image()
|
||||||
|
|
||||||
|
var tex : ImageTexture = ImageTexture.new()
|
||||||
|
|
||||||
|
if img:
|
||||||
|
tex.create_from_image(img, 0)
|
||||||
|
|
||||||
|
t.texture = tex
|
||||||
|
|
||||||
|
properties[slot_idx].append(property)
|
||||||
|
|
||||||
|
property.connect("changed", self, "on_universal_texture_changed", [ slot_idx ])
|
||||||
|
|
||||||
|
return slot_idx
|
||||||
|
|
||||||
func add_slot_label(input_type : int, output_type : int, getter : String, setter : String, slot_name : String) -> int:
|
func add_slot_label(input_type : int, output_type : int, getter : String, setter : String, slot_name : String) -> int:
|
||||||
var l : Label = Label.new()
|
var l : Label = Label.new()
|
||||||
|
|
||||||
@ -71,26 +91,26 @@ func add_slot_int(input_type : int, output_type : int, getter : String, setter :
|
|||||||
|
|
||||||
return slot_idx
|
return slot_idx
|
||||||
|
|
||||||
func add_slot_int_universal(input_property : MMNodeUniversalProperty, output_type : int, slot_name : String, prange : Vector2 = Vector2(-1000, 1000)) -> int:
|
func add_slot_int_universal(property : MMNodeUniversalProperty) -> int:
|
||||||
var bc : VBoxContainer = VBoxContainer.new()
|
var bc : VBoxContainer = VBoxContainer.new()
|
||||||
|
|
||||||
var l : Label = Label.new()
|
var l : Label = Label.new()
|
||||||
l.text = slot_name
|
l.text = property.slot_name
|
||||||
bc.add_child(l)
|
bc.add_child(l)
|
||||||
|
|
||||||
var sb : SpinBox = SpinBox.new()
|
var sb : SpinBox = SpinBox.new()
|
||||||
sb.rounded = true
|
sb.rounded = true
|
||||||
sb.min_value = prange.x
|
sb.min_value = property.value_range.x
|
||||||
sb.max_value = prange.y
|
sb.max_value = property.value_range.y
|
||||||
bc.add_child(sb)
|
bc.add_child(sb)
|
||||||
|
|
||||||
var slot_idx : int = add_slot(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL, output_type, "", "", bc)
|
var slot_idx : int = add_slot(property.input_slot_type, property.output_slot_type, "", "", bc)
|
||||||
|
|
||||||
sb.value = input_property.get_default_value()
|
sb.value = property.get_default_value()
|
||||||
|
|
||||||
sb.connect("value_changed", self, "on_int_universal_spinbox_value_changed", [ slot_idx ])
|
sb.connect("value_changed", self, "on_int_universal_spinbox_value_changed", [ slot_idx ])
|
||||||
|
|
||||||
properties[slot_idx].append(input_property)
|
properties[slot_idx].append(property)
|
||||||
|
|
||||||
return slot_idx
|
return slot_idx
|
||||||
|
|
||||||
@ -115,24 +135,24 @@ func add_slot_float(input_type : int, output_type : int, getter : String, setter
|
|||||||
|
|
||||||
return slot_idx
|
return slot_idx
|
||||||
|
|
||||||
func add_slot_float_universal(input_property : MMNodeUniversalProperty, output_type : int, slot_name : String, step : float = 0.1, prange : Vector2 = Vector2(-1000, 1000)) -> int:
|
func add_slot_float_universal(property : MMNodeUniversalProperty) -> int:
|
||||||
var bc : VBoxContainer = VBoxContainer.new()
|
var bc : VBoxContainer = VBoxContainer.new()
|
||||||
|
|
||||||
var l : Label = Label.new()
|
var l : Label = Label.new()
|
||||||
l.text = slot_name
|
l.text = property.slot_name
|
||||||
bc.add_child(l)
|
bc.add_child(l)
|
||||||
|
|
||||||
var sb : SpinBox = SpinBox.new()
|
var sb : SpinBox = SpinBox.new()
|
||||||
bc.add_child(sb)
|
bc.add_child(sb)
|
||||||
|
|
||||||
var slot_idx : int = add_slot(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL, output_type, "", "", bc)
|
var slot_idx : int = add_slot(property.input_slot_type, property.output_slot_type, "", "", bc)
|
||||||
sb.rounded = false
|
sb.rounded = false
|
||||||
sb.step = step
|
sb.step = property.value_step
|
||||||
sb.min_value = prange.x
|
sb.min_value = property.value_range.x
|
||||||
sb.max_value = prange.y
|
sb.max_value = property.value_range.y
|
||||||
sb.value = input_property.get_default_value()
|
sb.value = property.get_default_value()
|
||||||
|
|
||||||
properties[slot_idx].append(input_property)
|
properties[slot_idx].append(property)
|
||||||
|
|
||||||
sb.connect("value_changed", self, "on_float_universal_spinbox_value_changed", [ slot_idx ])
|
sb.connect("value_changed", self, "on_float_universal_spinbox_value_changed", [ slot_idx ])
|
||||||
|
|
||||||
@ -171,11 +191,11 @@ func add_slot_vector2(input_type : int, output_type : int, getter : String, sett
|
|||||||
|
|
||||||
return slot_idx
|
return slot_idx
|
||||||
|
|
||||||
func add_slot_vector2_universal(input_property : MMNodeUniversalProperty, output_type : int, slot_name : String, step : float = 0.1, prange : Vector2 = Vector2(-1000, 1000)) -> int:
|
func add_slot_vector2_universal(property : MMNodeUniversalProperty) -> int:
|
||||||
var bc : VBoxContainer = VBoxContainer.new()
|
var bc : VBoxContainer = VBoxContainer.new()
|
||||||
|
|
||||||
var l : Label = Label.new()
|
var l : Label = Label.new()
|
||||||
l.text = slot_name
|
l.text = property.slot_name
|
||||||
bc.add_child(l)
|
bc.add_child(l)
|
||||||
|
|
||||||
var sbx : SpinBox = SpinBox.new()
|
var sbx : SpinBox = SpinBox.new()
|
||||||
@ -184,22 +204,22 @@ func add_slot_vector2_universal(input_property : MMNodeUniversalProperty, output
|
|||||||
var sby : SpinBox = SpinBox.new()
|
var sby : SpinBox = SpinBox.new()
|
||||||
bc.add_child(sby)
|
bc.add_child(sby)
|
||||||
|
|
||||||
var slot_idx : int = add_slot(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL, output_type, "", "", bc)
|
var slot_idx : int = add_slot(property.input_slot_type, property.output_slot_type, "", "", bc)
|
||||||
sbx.rounded = false
|
sbx.rounded = false
|
||||||
sby.rounded = false
|
sby.rounded = false
|
||||||
sbx.step = step
|
sbx.step = property.value_step
|
||||||
sby.step = step
|
sby.step = property.value_step
|
||||||
sbx.min_value = prange.x
|
sbx.min_value = property.value_range.x
|
||||||
sbx.max_value = prange.y
|
sbx.max_value = property.value_range.y
|
||||||
sby.min_value = prange.x
|
sby.min_value = property.value_range.x
|
||||||
sby.max_value = prange.y
|
sby.max_value = property.value_range.y
|
||||||
|
|
||||||
var val : Vector2 = input_property.get_default_value()
|
var val : Vector2 = property.get_default_value()
|
||||||
|
|
||||||
sbx.value = val.x
|
sbx.value = val.x
|
||||||
sby.value = val.y
|
sby.value = val.y
|
||||||
|
|
||||||
properties[slot_idx].append(input_property)
|
properties[slot_idx].append(property)
|
||||||
|
|
||||||
sbx.connect("value_changed", self, "on_vector2_universal_spinbox_value_changed", [ slot_idx, sbx, sby ])
|
sbx.connect("value_changed", self, "on_vector2_universal_spinbox_value_changed", [ slot_idx, sbx, sby ])
|
||||||
sby.connect("value_changed", self, "on_vector2_universal_spinbox_value_changed", [ slot_idx, sbx, sby ])
|
sby.connect("value_changed", self, "on_vector2_universal_spinbox_value_changed", [ slot_idx, sbx, sby ])
|
||||||
@ -296,3 +316,15 @@ func on_vector2_universal_spinbox_value_changed(val : float, slot_idx, spinbox_x
|
|||||||
|
|
||||||
func on_slot_enum_item_selected(val : int, slot_idx : int) -> void:
|
func on_slot_enum_item_selected(val : int, slot_idx : int) -> void:
|
||||||
_node.call(properties[slot_idx][4], val)
|
_node.call(properties[slot_idx][4], val)
|
||||||
|
|
||||||
|
|
||||||
|
func on_universal_texture_changed(slot_idx : int) -> void:
|
||||||
|
var img : Image = properties[slot_idx][6].get_active_image()
|
||||||
|
|
||||||
|
var tex : ImageTexture = properties[slot_idx][5].texture
|
||||||
|
|
||||||
|
if img:
|
||||||
|
properties[slot_idx][5].texture.create_from_image(img, 0)
|
||||||
|
else:
|
||||||
|
properties[slot_idx][5].texture = ImageTexture.new()
|
||||||
|
|
||||||
|
@ -28,8 +28,6 @@ default_float = 0.2
|
|||||||
default_vector2 = Vector2( 0, 0 )
|
default_vector2 = Vector2( 0, 0 )
|
||||||
default_vector3 = Vector3( 0, 0, 0 )
|
default_vector3 = Vector3( 0, 0, 0 )
|
||||||
default_color = Color( 0, 0, 0, 1 )
|
default_color = Color( 0, 0, 0, 1 )
|
||||||
getter = ""
|
|
||||||
params = [ ]
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id=4]
|
[sub_resource type="Resource" id=4]
|
||||||
script = ExtResource( 5 )
|
script = ExtResource( 5 )
|
||||||
@ -39,8 +37,6 @@ default_float = 0.35
|
|||||||
default_vector2 = Vector2( 0, 0 )
|
default_vector2 = Vector2( 0, 0 )
|
||||||
default_vector3 = Vector3( 0, 0, 0 )
|
default_vector3 = Vector3( 0, 0, 0 )
|
||||||
default_color = Color( 0, 0, 0, 1 )
|
default_color = Color( 0, 0, 0, 1 )
|
||||||
getter = ""
|
|
||||||
params = [ ]
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id=5]
|
[sub_resource type="Resource" id=5]
|
||||||
script = ExtResource( 4 )
|
script = ExtResource( 4 )
|
||||||
|
@ -4,6 +4,8 @@ extends Resource
|
|||||||
|
|
||||||
export(Vector2) var graph_position : Vector2 = Vector2()
|
export(Vector2) var graph_position : Vector2 = Vector2()
|
||||||
|
|
||||||
|
var properties_initialized : bool = false
|
||||||
|
|
||||||
func recalculate_image(material, slot_idx : int) -> ImageTexture:
|
func recalculate_image(material, slot_idx : int) -> ImageTexture:
|
||||||
var image : Image = Image.new()
|
var image : Image = Image.new()
|
||||||
image.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8)
|
image.create(material.image_size.x, material.image_size.y, false, Image.FORMAT_RGBA8)
|
||||||
@ -34,7 +36,20 @@ func recalculate_image(material, slot_idx : int) -> ImageTexture:
|
|||||||
func get_value_for(uv : Vector2, slot_idx : int, pseed : int) -> Color:
|
func get_value_for(uv : Vector2, slot_idx : int, pseed : int) -> Color:
|
||||||
return Color()
|
return Color()
|
||||||
|
|
||||||
|
func init_properties() -> void:
|
||||||
|
if !properties_initialized:
|
||||||
|
properties_initialized = true
|
||||||
|
|
||||||
|
_init_properties()
|
||||||
|
|
||||||
|
func _init_properties() -> void:
|
||||||
|
pass
|
||||||
|
|
||||||
func register_methods(mm_graph_node) -> void:
|
func register_methods(mm_graph_node) -> void:
|
||||||
|
init_properties()
|
||||||
|
_register_methods(mm_graph_node)
|
||||||
|
|
||||||
|
func _register_methods(mm_graph_node) -> void:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
func get_graph_position() -> Vector2:
|
func get_graph_position() -> Vector2:
|
||||||
|
@ -38,7 +38,7 @@ export(Resource) var input_property : Resource
|
|||||||
|
|
||||||
var input_slot_type : int = SlotTypes.SLOT_TYPE_NONE
|
var input_slot_type : int = SlotTypes.SLOT_TYPE_NONE
|
||||||
var output_slot_type : int = SlotTypes.SLOT_TYPE_NONE
|
var output_slot_type : int = SlotTypes.SLOT_TYPE_NONE
|
||||||
var slot_name : String = ""
|
var slot_name : String
|
||||||
var value_step : float = 0.1
|
var value_step : float = 0.1
|
||||||
var value_range : Vector2 = Vector2(-1000, 1000)
|
var value_range : Vector2 = Vector2(-1000, 1000)
|
||||||
|
|
||||||
@ -101,3 +101,9 @@ func set_default_value(val):
|
|||||||
default_image = val
|
default_image = val
|
||||||
|
|
||||||
emit_changed()
|
emit_changed()
|
||||||
|
|
||||||
|
func get_active_image() -> Image:
|
||||||
|
if override_image:
|
||||||
|
return override_image
|
||||||
|
|
||||||
|
return default_image
|
||||||
|
@ -13,7 +13,7 @@ export(float) var persistence : float = 0.5
|
|||||||
func get_value_for(uv : Vector2, slot_idx : int, pseed : int) -> Color:
|
func get_value_for(uv : Vector2, slot_idx : int, pseed : int) -> Color:
|
||||||
return NoisePerlin.perlinc(uv, scale, iterations, persistence, pseed)
|
return NoisePerlin.perlinc(uv, scale, iterations, persistence, pseed)
|
||||||
|
|
||||||
func register_methods(mm_graph_node) -> void:
|
func _register_methods(mm_graph_node) -> void:
|
||||||
mm_graph_node.add_slot_texture(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE, "recalculate_image", "")
|
mm_graph_node.add_slot_texture(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE, "recalculate_image", "")
|
||||||
mm_graph_node.add_slot_int(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, "get_iterations", "set_iterations", "iterations")#, Vector2(1, 10))
|
mm_graph_node.add_slot_int(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, "get_iterations", "set_iterations", "iterations")#, Vector2(1, 10))
|
||||||
mm_graph_node.add_slot_float(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, "get_persistence", "set_persistence", "persistence", 0.05)#, Vector2(0, 1))
|
mm_graph_node.add_slot_float(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, "get_persistence", "set_persistence", "persistence", 0.05)#, Vector2(0, 1))
|
||||||
|
@ -16,10 +16,7 @@ export(int) var sides : int = 6
|
|||||||
export(Resource) var radius : Resource
|
export(Resource) var radius : Resource
|
||||||
export(Resource) var edge : Resource
|
export(Resource) var edge : Resource
|
||||||
|
|
||||||
#export(float) var radius : float = 0.845361000; #univ input todo
|
func _init_properties():
|
||||||
#export(float) var edge : float = 0.051546000; #univ input todo
|
|
||||||
|
|
||||||
func _init():
|
|
||||||
var changed : bool = false
|
var changed : bool = false
|
||||||
|
|
||||||
if !radius:
|
if !radius:
|
||||||
@ -28,15 +25,30 @@ func _init():
|
|||||||
radius.set_default_value(0.34375)
|
radius.set_default_value(0.34375)
|
||||||
changed = true
|
changed = true
|
||||||
|
|
||||||
|
radius.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL
|
||||||
|
radius.slot_name = "radius"
|
||||||
|
radius.value_step = 0.05
|
||||||
|
|
||||||
if !edge:
|
if !edge:
|
||||||
edge = MMNodeUniversalProperty.new()
|
edge = MMNodeUniversalProperty.new()
|
||||||
edge.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT
|
edge.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT
|
||||||
edge.set_default_value(0.2)
|
edge.set_default_value(0.2)
|
||||||
changed = true
|
changed = true
|
||||||
|
|
||||||
|
edge.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL
|
||||||
|
edge.slot_name = "edge"
|
||||||
|
edge.value_step = 0.05
|
||||||
|
|
||||||
if changed:
|
if changed:
|
||||||
emit_changed()
|
emit_changed()
|
||||||
|
|
||||||
|
func _register_methods(mm_graph_node) -> void:
|
||||||
|
mm_graph_node.add_slot_texture(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE, "recalculate_image", "")
|
||||||
|
mm_graph_node.add_slot_enum(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, "get_shape_typoe", "set_shape_typoe", "shape_type", [ "Circle", "Polygon", "Star", "Curved Star", "Rays" ])
|
||||||
|
mm_graph_node.add_slot_int(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, "get_sides", "set_sides", "sides")#, Vector2(1, 10))
|
||||||
|
mm_graph_node.add_slot_float_universal(radius)
|
||||||
|
mm_graph_node.add_slot_float_universal(edge)
|
||||||
|
|
||||||
func get_value_for(uv : Vector2, slot_idx : int, pseed : int) -> Color:
|
func get_value_for(uv : Vector2, slot_idx : int, pseed : int) -> Color:
|
||||||
var c : float = 0
|
var c : float = 0
|
||||||
|
|
||||||
@ -53,13 +65,6 @@ func get_value_for(uv : Vector2, slot_idx : int, pseed : int) -> Color:
|
|||||||
|
|
||||||
return Color(c, c, c, 1)
|
return Color(c, c, c, 1)
|
||||||
|
|
||||||
func register_methods(mm_graph_node) -> void:
|
|
||||||
mm_graph_node.add_slot_texture(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_IMAGE, "recalculate_image", "")
|
|
||||||
mm_graph_node.add_slot_enum(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, "get_shape_typoe", "set_shape_typoe", "shape_type", [ "Circle", "Polygon", "Star", "Curved Star", "Rays" ])
|
|
||||||
mm_graph_node.add_slot_int(MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, "get_sides", "set_sides", "sides")#, Vector2(1, 10))
|
|
||||||
mm_graph_node.add_slot_float_universal(radius, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, "radius", 0.05)
|
|
||||||
mm_graph_node.add_slot_float_universal(edge, MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_NONE, "edge", 0.05)
|
|
||||||
|
|
||||||
func get_shape_typoe() -> int:
|
func get_shape_typoe() -> int:
|
||||||
return shape_type
|
return shape_type
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user