Commit graph

28 commits

Author SHA1 Message Date
Lera Elvoé
ba2dd6a837 remove RPC (#153)
bye bye

Reviewed-on: https://codeberg.org/StreamGraph/StreamGraph/pulls/153
Co-authored-by: Lera Elvoé <yagich@poto.cafe>
Co-committed-by: Lera Elvoé <yagich@poto.cafe>
2024-05-08 07:59:19 +00:00
Lera Elvoé
240750c48e library groups (#151)
~~cl0ses #51~~
~~cl0ses #93~~
~~cl0ses #98~~
~~cl0ses #150~~

another change in this PR: the Deck and DeckNode classes now use manual memory management.

Reviewed-on: https://codeberg.org/StreamGraph/StreamGraph/pulls/151
Co-authored-by: Lera Elvoé <yagich@poto.cafe>
Co-committed-by: Lera Elvoé <yagich@poto.cafe>
2024-05-08 07:43:45 +00:00
Lera Elvoé
a80af97377 add toast notifications (#148)
closes #138

Reviewed-on: https://codeberg.org/StreamGraph/StreamGraph/pulls/148
Co-authored-by: Lera Elvoé <yagich@poto.cafe>
Co-committed-by: Lera Elvoé <yagich@poto.cafe>
2024-04-17 02:06:48 +00:00
Lera Elvoé
f24906715d store connections inside the deck (#147)
- node/port connections are now stored in the deck they belong to
- share the connections object between group instances for free syncing
- add compatibility code to allow loading decks made before this change
- disabled the ability to open multiple decks in the renderer for now since it'd cause problems when opening multiple decks and one of them is incompatible; to be redesigned later

closes #140

Reviewed-on: https://codeberg.org/StreamGraph/StreamGraph/pulls/147
Co-authored-by: Lera Elvoé <yagich@poto.cafe>
Co-committed-by: Lera Elvoé <yagich@poto.cafe>
2024-04-17 00:24:55 +00:00
Lera Elvoé
a518e46b0f add a method to make group instances unique, making them independent (#143)
closes #97

when copying group nodes across decks (including in and out of groups), they become unique and completely independent copies of the original. this is done recursively, so in the case of copying:

- group X
	- contained in Deck A
	- has another group Z

into Deck B, group X will become group Y, group Z will become group W.

there is a rare bug that will sometimes cause the deck to save with no groups at all, which i haven't been able to hunt down and don't know how to replicate at the moment.

Reviewed-on: https://codeberg.org/StreamGraph/StreamGraph/pulls/143
Co-authored-by: Lera Elvoé <yagich@poto.cafe>
Co-committed-by: Lera Elvoé <yagich@poto.cafe>
2024-04-11 14:56:33 +00:00
Lera Elvoé
2ac9db8350 fix node connections not being empty on copy/paste (#142)
Reviewed-on: https://codeberg.org/StreamGraph/StreamGraph/pulls/142
Co-authored-by: Lera Elvoé <yagich@poto.cafe>
Co-committed-by: Lera Elvoé <yagich@poto.cafe>
2024-04-11 06:53:51 +00:00
Lera Elvoé
a1b74410f6 rework RPC Signal Layer class (#101)
Reviewed-on: https://codeberg.org/StreamGraph/StreamGraph/pulls/101
Co-authored-by: Lera Elvoé <yagich@poto.cafe>
Co-committed-by: Lera Elvoé <yagich@poto.cafe>
2024-03-14 05:54:25 +00:00
Lera Elvoé
df3b3c4990 silence a lot of warnings (#73)
Reviewed-on: https://codeberg.org/StreamGraph/StreamGraph/pulls/73
Co-authored-by: Lera Elvoé <yagich@poto.cafe>
Co-committed-by: Lera Elvoé <yagich@poto.cafe>
2024-02-21 06:34:17 +00:00
Lera Elvoé
c3a91d0848 replace C-style boolean operators with their keyword counterparts (#72)
closes #71

Reviewed-on: https://codeberg.org/StreamGraph/StreamGraph/pulls/72
Co-authored-by: Lera Elvoé <yagich@poto.cafe>
Co-committed-by: Lera Elvoé <yagich@poto.cafe>
2024-02-21 06:11:29 +00:00
Lera Elvoé
51652ef277 add port usage type to Port (#69)
first part of addressing #59

every `Port` now has a `usage_type` field that indicates whether it can be used for triggers (eg. sending and receiving events), value requests, or both. `Deck` has an additional method to validate if a potential connection is legal, which checks for the following in order:

1. the source and target nodes are not the same node;
2. the port usage is valid (trigger to trigger, value to value, both to any);
3. the port types are compatible
4. the connection doesn't already exist

all node ports by default use the "both" usage, since that will be the most common use case (especially in cases where an input port can accept either a trigger and a value request but the output can only send one type), but it can be specified as an optional argument in `add_[input|output]_port()`

usage types are represented in the renderer by different port icons:

![image](/attachments/28d3cfe9-c62c-4dd4-937d-64dbe87cb205)

there is a reference implementation in the Compare Values and Twitch Chat Received nodes, since those were used as examples in #59. other nodes will be added as a separate PR later if this is merged, since behavior will vary greatly per node.

Reviewed-on: https://codeberg.org/StreamGraph/StreamGraph/pulls/69
Co-authored-by: Lera Elvoé <yagich@poto.cafe>
Co-committed-by: Lera Elvoé <yagich@poto.cafe>
2024-02-21 04:08:36 +00:00
Lera Elvoé
b143c63dcc add a bottom dock (#44)
- moves the console to the new bottom dock
- adds a deck variables inspector to the bottom dock that allows adding, removing and editing variables of the currently open deck
- bottom dock can be opened with <kbd>N</kbd>

closes #33

Reviewed-on: https://codeberg.org/Eroax/StreamGraph/pulls/44
Co-authored-by: Lera Elvoé <yagich@poto.cafe>
Co-committed-by: Lera Elvoé <yagich@poto.cafe>
2024-01-19 09:52:51 +00:00
Lera Elvoé
0ebe17399d fix connections being copied incorrectly (#42)
when copying nodes, incoming and outgoing connections could be copied in such a way that they had (empty) entries in the outgoing/incoming connections dictionaries despite not being connected to anything

Reviewed-on: https://codeberg.org/Eroax/StreamGraph/pulls/42
Co-authored-by: Lera Elvoé <yagich@poto.cafe>
Co-committed-by: Lera Elvoé <yagich@poto.cafe>
2024-01-17 08:15:02 +00:00
Lera Elvoé
4922f7cafe disconnect existing incoming connection when connecting another and refuse duplicate connections (#22)
fixes #17

Reviewed-on: https://codeberg.org/Eroax/StreamGraph/pulls/22
Co-authored-by: Lera Elvoé <yagich@poto.cafe>
Co-committed-by: Lera Elvoé <yagich@poto.cafe>
2023-12-18 21:10:58 +00:00
Lera Elvoé
b55a462945 Add OBS and Twitch nodes. Improve UX significantly. Rework groups from the ground up with a new instancing feature. Open to the public. (#18)
After months of work and over a hundred commits on this repo alone (not to mention the old, half-working repos on GitHub), StreamGraph is finally ready to be shown to the public, even if in an incomplete state.

This PR is a culmination of numerous design discussions, re-writes, and hours spent by both @Eroax and myself.

Reviewed-on: https://codeberg.org/Eroax/StreamGraph/pulls/18
Co-authored-by: Lera Elvoé <yagich@poto.cafe>
Co-committed-by: Lera Elvoé <yagich@poto.cafe>
2023-12-15 21:44:25 +00:00
Lera Elvoé
c4e35043df types system simplification (#8)
no longer using classes for every type. the type system has been greatly simplified, with the added bonus that it hooks directly into GraphEdit's slot type system. connections will still fail if the type conversion fails, which may be used by other renderers.

the type conversion map is straightforward to understand, and easy to extend should the need arise (hopefully it shouldn't).

Reviewed-on: https://codeberg.org/Eroax/Re-DotDeck/pulls/8
Co-authored-by: Lera Elvoé <yagich@poto.cafe>
Co-committed-by: Lera Elvoé <yagich@poto.cafe>
2023-11-26 22:07:15 +00:00
Lera Elvoé
1fb71617bb fix grouping nodes not removing incoming connections (#6)
Reviewed-on: https://codeberg.org/Eroax/Re-DotDeck/pulls/6
Co-authored-by: Lera Elvoé <yagich@poto.cafe>
Co-committed-by: Lera Elvoé <yagich@poto.cafe>
2023-11-25 11:00:52 +00:00
Lera Elvoé
b36bdaf71c yag's doc sprint (#4)
documented everything (except NodeDB) in the classes/ folder

Reviewed-on: https://codeberg.org/Eroax/Re-DotDeck/pulls/4
Co-authored-by: Lera Elvoé <yagich@poto.cafe>
Co-committed-by: Lera Elvoé <yagich@poto.cafe>
2023-11-25 10:40:53 +00:00
Lera Elvoé
fa5e9997ef merge groups (#2)
here we go

Reviewed-on: https://codeberg.org/Eroax/Re-DotDeck/pulls/2
Co-authored-by: Lera Elvoé <yagich@poto.cafe>
Co-committed-by: Lera Elvoé <yagich@poto.cafe>
2023-11-22 04:26:11 +00:00
Lera Elvoé
04b20946ad
save meta in a more godot-friendly format 2023-11-17 13:26:50 +03:00
Lera Elvoé
4ed9b37b0f
properly disconnect nodes, removing incoming connections on target node 2023-07-21 12:12:20 +03:00
Lera Elvoé
2f92233ca0
saving and loading port values 2023-07-21 11:26:43 +03:00
Lera Elvoé
3c5dfdd6fd
loading decks 2023-07-21 11:10:24 +03:00
Lera Elvoé
074edb1e1f
serialize to json/dictionary, instance by type 2023-06-24 06:39:50 +03:00
Lera Elvoé
46169147a4
add call time resolution of port values 2023-06-13 18:23:10 +03:00
Lera Elvoé
a5acd3a1c3
fix connections but 2 2023-06-12 18:59:30 +03:00
Lera Elvoé
c2b04e816b
remove connection method in deck node, disconnect nodes method in deck 2023-06-11 19:26:12 +03:00
Lera Elvoé
badd1e2450
fix connections 2023-06-11 18:39:11 +03:00
Lera Elvoé
39a18a4087
types, ports, nodes, decks, test renderer 2023-06-10 20:13:16 +03:00