diff options
Diffstat (limited to 'src/addons/rmsmartshape/materials/edge_material_metadata.gd')
-rw-r--r-- | src/addons/rmsmartshape/materials/edge_material_metadata.gd | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/src/addons/rmsmartshape/materials/edge_material_metadata.gd b/src/addons/rmsmartshape/materials/edge_material_metadata.gd new file mode 100644 index 0000000..3d96e74 --- /dev/null +++ b/src/addons/rmsmartshape/materials/edge_material_metadata.gd @@ -0,0 +1,73 @@ +tool +extends Resource +class_name SS2D_Material_Edge_Metadata + +""" +Represents the metadata for an edge material +Used by Shape Material +""" + +export (Resource) var edge_material = null setget set_edge_material +# What range of normals can this edge be used on +export (Resource) var normal_range = SS2D_NormalRange.new(0, 360) setget set_normal_range +# If edge should be welded to the edges surrounding it +export (bool) var weld: bool = true setget set_weld +# If this edge should be visible +export (bool) var render: bool = true setget set_render +# z index for an edge +export (int) var z_index: int = 0 setget set_z_index +# z index for an edge +export (int) var z_as_relative: bool = true setget set_z_as_relative +# Distance from center +export (float, -1.5, 1.5, 0.1) var offset: float = 0.0 setget set_offset + + +func _to_string() -> String: + return "%s | %s" % [str(edge_material), normal_range] + + +func set_render(b: bool): + render = b + emit_signal("changed") + + +func set_edge_material(m: SS2D_Material_Edge): + if edge_material != null: + if edge_material.is_connected("changed", self, "_on_edge_changed"): + edge_material.disconnect("changed", self, "_on_edge_changed") + edge_material = m + if edge_material != null: + edge_material.connect("changed", self, "_on_edge_changed") + emit_signal("changed") + + +func set_normal_range(nr: SS2D_NormalRange): + if nr == null: + return + if normal_range.is_connected("changed", self, "_on_edge_changed"): + normal_range.disconnect("changed", self, "_on_edge_changed") + normal_range = nr + normal_range.connect("changed", self, "_on_edge_changed") + emit_signal("changed") + + +func set_weld(b: bool): + weld = b + emit_signal("changed") + + +func set_z_index(z: int): + z_index = z + emit_signal("changed") + +func set_z_as_relative(b: bool): + z_as_relative = b + emit_signal("changed") + +func set_offset(f: float): + offset = f + emit_signal("changed") + + +func _on_edge_changed(): + emit_signal("changed") |