Releases: SysError99/q-godot
1.1.3 Stable
This version introduces new class System
which does nothing new but helps making code shorter, by omitting QGodot
calls.
Simply extends the system class with extends QGodot.System
and say Goodbye to the constant QGodot
callings!
extends QGodot.System
# 'QGodot.query' gets shortened to just 'query'
onready var owned_horses := query("KinematicBody2D", ["Inventory", "horse"])
func _ready() -> void:
# 'QGodot.to_signal' gets shortened to just 'to_signal'
yield(to_signal("game_loaded"), "completed")
print("Game is fully loaded!")
func _process(_delta: float) -> void:
# Only API reference that has been changed, you must call it as function instead
# 'QGodot.is_second_frame' -> 'is_second_frame()'
if is_second_frame():
print("This is second frame.")
1.1.2.1 Stable
This release fixes minor issue that signal_name
doesn't show up when no signal awaiters exist.
This version has no backwards compatibility issues.
1.1.2 Stable
This version finalises 1.1.1.1 version and become a new stable version that is ready for use.
Changes
QGodot.signal
is nowQGodot.to_signal
sincesignal
is a reserved keyword in both Godot 3 and Godot 4, however it works in Godot 3 and not Godot 4, so making change toto_signal
makes total sense.- Warning if any of global signals getting emitted but no awaiters exist.
This version presents a compatibility issue with ones who use 1.1.1.1 version regarding signal
keyword change, but upgrading from 1.0.3 has no compatibility issues.
1.1.1.1 Latest
This version has two new features.
- Now QGodot supports
yield
ing global signals that will help writing asynchronous procedural code, by generating an awaiter withQGodot.signal()
, then emitting signals as usual. However, this will only work with signals with either zero or one parameter. QGodot.by_name: Dictionary<String, Dictionary>
, a new key-value of main node name and binding list that contains (almost) all nodes that are in the query. This will help on some use cases that you need to make changes on specific nodes and not using common iteration method which helps up on speed. However, you need to be careful since main nodes with same name will make this variable malfunction.
This version flagged as 'untested' as usual, although I still play test it myself in occasion. I already planned to test all added features, along with fix bugs in the upcoming 1.2 version. At a meantime, feel free to test on your own pace, or use it at your own risk!
v0.4 Release
This release features an ability to 'exclude' sub nodes and groups from query for even more refined querying. Simply add -
symbol before sub node path or group name, and QGodot will exclude those from the query.
# Query that finds only wild horse, judging by the way that they don't have inventory.
onready var wild_horses := QGodot.query("KinematicBody", ["HorseSound", "-Inventory"]
Also, now it includes warnings on the use of deprecated functions in the library.
This release doesn't have any of breaking changes as long as the project doesn't use -
symbol before node names and group names, which means without the condition described, this is a safe upgrade.
v0.1
This release is so far been tested on Godot 3.5.1 (over a month), with experimental support on 4.0. However, some unique features are dropped since 4.0 has significant changes on how GDScript works (mainly on get_meta()
won't accept special characters anymore). This is still not production ready and some features still need to be re-implemented (such as get_meta()
on cached nodes).
Feel free to play test with it and give me a feedback via issues panel!
1.0.3 Stable
This version brings one new feature. Now querying using default names will also include nodes with custom clases.
class Enemy extends KinematicBody2D:
...
class Player extends KinematicBody2D:
...
# Will include 'Enemy' and 'Player' as supposed to 'none'.
onready var entities := QGodot.query("KinematicBody2D")
This version may cause compatibility issues if your project still relies on old querying mechanism (which means, the project intentionally uses default names and custom names to filter the query), you may need certain reworks on the project before upgrading to this version, but if not, this version should just work.