{"id":14961429,"url":"https://github.com/officialduke99/signalprinter","last_synced_at":"2025-10-24T20:31:43.149Z","repository":{"id":253297689,"uuid":"843009816","full_name":"officialduke99/SignalPrinter","owner":"officialduke99","description":"Godot plugin for monitoring signals of a global EventBus singleton.","archived":false,"fork":false,"pushed_at":"2024-08-15T18:47:30.000Z","size":49,"stargazers_count":10,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-31T04:24:38.681Z","etag":null,"topics":["debugging","game-development","godot","godot-engine","godot-plugin","godot4","logging","printing","tool"],"latest_commit_sha":null,"homepage":"","language":"GDScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/officialduke99.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-15T15:28:56.000Z","updated_at":"2024-12-04T19:41:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"b0ab39e4-9ace-4a06-80ea-595d935fe94f","html_url":"https://github.com/officialduke99/SignalPrinter","commit_stats":{"total_commits":12,"total_committers":2,"mean_commits":6.0,"dds":0.08333333333333337,"last_synced_commit":"cab408e7eb0bdc6e9db9871f5688873ae75dc056"},"previous_names":["officialduke99/signalprinter"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/officialduke99%2FSignalPrinter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/officialduke99%2FSignalPrinter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/officialduke99%2FSignalPrinter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/officialduke99%2FSignalPrinter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/officialduke99","download_url":"https://codeload.github.com/officialduke99/SignalPrinter/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238035385,"owners_count":19405682,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["debugging","game-development","godot","godot-engine","godot-plugin","godot4","logging","printing","tool"],"created_at":"2024-09-24T13:25:11.419Z","updated_at":"2025-10-24T20:31:42.758Z","avatar_url":"https://github.com/officialduke99.png","language":"GDScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SignalPrinter\n\n![](addons/signal_printer/icon.svg)\n\n_Plugin for monitoring signals of a global EventBus singleton._\n\nWhile creating Godot projects, developers often use a global signal script, a singleton, which houses only signals needed for unrelated systems to talk to each other. These scripts go by names like EventBus, MessageBus, Signalton, etc. One downside these scripts often have is the inability to see under the hood, as there isn't an easy way to monitor multiple signals being emitted. Developers often have to resort to using `print()` statements on each end of the signal path.\n\nThis plugin adds a `SignalPrinter` node, which automatically connects to all signals of your global EventBus and routes them to a method, which prints the signal's name, all arguments and (optionally) the time at which the signal was recieved.\n\nExample output:\n\n\u003e\u003cu\u003e**player_interacted**\u003c/u\u003e\u003cbr\u003e\nwith : Node3D = Pickup:\u003cArea3D#41657828805\u003e _// The type is the same as was declared in the signal itself_\u003cbr\u003e\ntime (ticks msec) = 4647\u003cbr\u003e\n\n\u003e\u003cu\u003e**inventory_item_changed**\u003c/u\u003e\u003cbr\u003e\nitem : Item = \u003cResource#-9223371996253911657\u003e _// It even recognizes custom Resource types (Item)_\u003cbr\u003e\nindex : int = 1 _// And has support for Variant types_\u003cbr\u003e\ntime (ticks msec) = 17442\u003cbr\u003e\n\n![Example output screenshot](https://github.com/officialduke99/SignalPrinter/blob/main/assets/OutputExample.JPG?raw=true)\n\n## Usage\nYou **need** to replace `global_bus` in [signal_printer.gd](addons/signal_printer/signal_printer.gd) script with your own singleton's reference. Otherwise you get an error. \n\n### Example\nIf your global bus is named `EventBus`, you simply replace null with EventBus\n\nFrom:\u003cbr\u003e\n`static var global_bus : Node = null` :x:\n\nTo:\u003cbr\u003e\n`static var global_bus : Node = EventBus` :heavy_check_mark:\n\nYou pass the singleton in directly, not by its name.\u003cbr\u003e\n`static var global_bus : Node = \"EventBus\"` :x:\n\nAfter that, you can add this node anywhere in the scene and remove it, when you don't need it anymore.\u003cbr\u003e\n![Node in scene](https://github.com/officialduke99/SignalPrinter/blob/main/assets/NodeInScene.JPG?raw=true) ![Node properties](https://github.com/officialduke99/SignalPrinter/blob/main/assets/EditableProperties.JPG?raw=true)\n\n### Warning\nAs GDScript currently doesn't support variable argument count, arguments in the function are added manually. Currently, the _max argument count per signal is **10**_, but if you need more, you can add them easily. \n\n## Further reading\n[How to create an EventBus in Godot](https://www.gdquest.com/tutorial/godot/design-patterns/event-bus-singleton/)\u003cbr\u003e\n[Theory behind the Observer pattern](https://gameprogrammingpatterns.com/observer.html)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fofficialduke99%2Fsignalprinter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fofficialduke99%2Fsignalprinter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fofficialduke99%2Fsignalprinter/lists"}