-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwire.tscn
More file actions
92 lines (72 loc) · 3.13 KB
/
wire.tscn
File metadata and controls
92 lines (72 loc) · 3.13 KB
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
90
91
92
[gd_scene load_steps=5 format=3 uid="uid://bo0f0agwldovs"]
[ext_resource type="Texture2D" uid="uid://b34q66ndjwd5f" path="res://assets/Sprites/Content/UI Buttons/6.png" id="1_xe2i4"]
[sub_resource type="GDScript" id="GDScript_xe2i4"]
script/source = "extends Node2D
var is_drawing = false
var start_port = null
@onready var line = $Line2D
@onready var port1 = $Port1
@onready var port2 = $Port2
func _input(event):
if is_drawing and event is InputEventMouseButton and not event.is_pressed():
if event.button_index == MOUSE_BUTTON_LEFT or event.button_index == MOUSE_BUTTON_RIGHT:
var space_state = get_world_2d().direct_space_state
var query = PhysicsPointQueryParameters2D.new()
query.position = get_global_mouse_position()
query.collide_with_areas = true
query.collision_mask = 2 # ports layer
var result = space_state.intersect_point(query)
if not result.is_empty():
var target_port = result[0].collider
if target_port.is_in_group(\"ports\") and target_port != start_port:
line.set_point_position(2, line.to_local(target_port.global_position))
is_drawing = false
start_port = null
else:
is_drawing = false
line.clear_points()
start_port = null
func _process(delta):
if is_drawing:
line.set_point_position(1, line.to_local(get_global_mouse_position()))
func handle_port_click(event: InputEvent, node) -> void:
if event.is_pressed() and event is InputEventMouseButton:
if event.button_index == MOUSE_BUTTON_LEFT or event.button_index == MOUSE_BUTTON_RIGHT:
if not is_drawing:
is_drawing = true
start_port = node
line.clear_points()
line.add_point(line.to_local(node.global_position))
line.add_point(line.to_local(get_global_mouse_position()))
#func _on_port_1_input_event(viewport: Node, event: InputEvent, shape_idx: int) -> void:
#handle_port_click(event, port1)
#
#func _on_port_2_input_event(viewport: Node, event: InputEvent, shape_idx: int) -> void:
#handle_port_click(event, port2)
"
[sub_resource type="RectangleShape2D" id="RectangleShape2D_bdjww"]
size = Vector2(19, 19)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_qj5kq"]
size = Vector2(19, 19)
[node name="Node2D" type="Node2D"]
texture_filter = 1
script = SubResource("GDScript_xe2i4")
[node name="Port1" type="Area2D" parent="." groups=["ports"]]
position = Vector2(24, 92)
collision_layer = 2
[node name="CollisionShape2D" type="CollisionShape2D" parent="Port1"]
shape = SubResource("RectangleShape2D_bdjww")
[node name="6" type="Sprite2D" parent="Port1/CollisionShape2D"]
texture = ExtResource("1_xe2i4")
[node name="Port2" type="Area2D" parent="." groups=["ports"]]
position = Vector2(116, 17)
collision_layer = 2
[node name="CollisionShape2D" type="CollisionShape2D" parent="Port2"]
shape = SubResource("RectangleShape2D_qj5kq")
[node name="6" type="Sprite2D" parent="Port2/CollisionShape2D"]
position = Vector2(-0.5, 0.5)
texture = ExtResource("1_xe2i4")
[node name="Line2D" type="Line2D" parent="."]
position = Vector2(14.21, -9.5)
[connection signal="input_event" from="Port1" to="." method="_on_port_1_input_event"]
[connection signal="input_event" from="Port2" to="." method="_on_port_2_input_event"]