aboutsummaryrefslogtreecommitdiff
path: root/src/addons/rmsmartshape/materials/edge_material_metadata.gd
blob: 3d96e74966c8c2c6b6ee82712b99e2a8d152e40e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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")