-
Notifications
You must be signed in to change notification settings - Fork 0
/
chaos_preset.gd
89 lines (68 loc) · 2.06 KB
/
chaos_preset.gd
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
class_name ChaosPreset extends Resource
signal chaos_changed
signal ui_changed
## Name of this particular preset.
@export var name: String = "New Chaos Preset"
## How many iterations should the chaos game run for
@export_range(5_000, 1_000_000, 5_000) var iterations: int = 100_000:
set(v):
iterations = v
chaos_changed.emit()
## How far to a vertex should the chaos game go. Typically below 1, but can also go higher.
@export_range(0.001, 2, 0.001) var ratio: float = 0.5:
set(v):
ratio = v
chaos_changed.emit()
## Vertices on the canvas. Format: [0, 0] is topleft and [1,1] bottom right.
@export var points: Array[Vector2] = []
func append_point(point: Vector2) -> void:
points.append(point)
chaos_changed.emit()
## Always a square.
var canvas_size: int = 1024
## Color for the drawn points
@export var points_color: Color = Color.BLACK:
set(v):
points_color = v
chaos_changed.emit()
## Canvas color
@export var background_color: Color = Color.WHITE:
set(v):
background_color = v
chaos_changed.emit()
@export_group("Rules")
@export var rule_prevent_same_vertex: bool = false:
set(v):
rule_prevent_same_vertex = v
chaos_changed.emit()
@export var rule_prevent_next: bool = false:
set(v):
rule_prevent_next = v
chaos_changed.emit()
@export var rule_prevent_next_next: bool = false:
set(v):
rule_prevent_next_next = v
chaos_changed.emit()
@export var rule_prevent_previous: bool = false:
set(v):
rule_prevent_previous = v
chaos_changed.emit()
@export var rule_prevent_previous_previous: bool = false:
set(v):
rule_prevent_previous_previous = v
chaos_changed.emit()
@export_group("UI Settings")
## If adding new points is allowed
@export var can_add_points: bool = true
## If moving points is allowed
@export var can_move_points: bool = true
## Show helper "handles" on vertices
@export var show_vertices: bool = true:
set(v):
show_vertices = v
ui_changed.emit()
## Outline the vertices with a line. Order of the vertices starts to matter here!
@export var show_helper_line: bool = true:
set(v):
show_helper_line = v
ui_changed.emit()