-
Notifications
You must be signed in to change notification settings - Fork 1
/
scn_test_q_godot.gd
90 lines (62 loc) · 2.27 KB
/
scn_test_q_godot.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
90
extends Node2D
const TARGET = Vector2(512, 300)
var tween = Tween.new()
class TestSignalBinding extends Node:
func _enter_tree() -> void:
QGodot.signal_connect("test_signal", self, "_test_signal_fired")
yield(get_tree().create_timer(5), "timeout")
QGodot.signal_emit("another_test_signal", [ 1234 ])
yield(get_tree().create_timer(5), "timeout")
QGodot.signal_emit("another_test_signal", [ 5678 ])
func _test_signal_fired(text: String) -> void:
print("TestSignalBinding: %s" % text)
# class Movement extends Node:
# const TARGET = Vector2(512, 300)
# var parent: KinematicBody2D
# var sprite: Sprite
# func _init(parent, sprite) -> void:
# self.parent = parent
# self.sprite = sprite
# func _process(_delta: float) -> void:
# var vel := (parent.position.direction_to(TARGET) * 10.0) as Vector2
# parent.move_and_slide(vel)
# parent.look_at(TARGET)
# sprite.scale *= 1.001
onready var label := $CanvasLayer/Label as Label
onready var query := QGodot.query("KinematicBody2D", ["Sprite"])
func _ready() -> void:
add_child(tween)
rand_seed(814995)
# QGodot.bind_query(
# "KinematicBody2D",
# ["Sprite"],
# Movement
# )
add_child(TestSignalBinding.new())
QGodot.signal_emit("test_signal", [ "Hello, subscribers!" ])
for x in 10000:
var clone := KinematicBody2D.new()
var sprite := Sprite.new()
clone.name = "Icon%d" % x
sprite.name = "Sprite"
sprite.texture = preload("res://icon.png")
clone.position = Vector2(randi() % 1024, randi() % 600)
clone.add_child(sprite)
add_child(clone)
print(query.size())
var value_from_another_signal = yield(QGodot.to_signal("another_test_signal"), "completed")
print("value is %d" % value_from_another_signal)
value_from_another_signal = yield(QGodot.to_signal("another_test_signal"), "completed")
print("value is %d" % value_from_another_signal)
func _process(_delta: float) -> void:
label.text = "FPS: %f" % Engine.get_frames_per_second()
for q in query:
var entity := q["self"] as KinematicBody2D
var vel := (entity.position.direction_to(TARGET) * 10.0) as Vector2
q["Sprite"].scale *= 1.001
entity.move_and_slide(vel)
entity.look_at(TARGET)
func _input(event: InputEvent) -> void:
if event.is_action_pressed("ui_home"):
QGodot.flush()
get_tree().change_scene("res://scn_next.tscn")