GraphiteEditor / GraphiteEditor/Graphite

A network's import cannot be connected directly to its export

Offen
#1,762 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Architecture Graphene
Vorherrschende Sprache
Rust
Sterne
27.2k
Forks
1.3k
Ø Merge
20 Std. 5 Min.
Gemergte PRs (30 T.)
57

Beschreibung

Currently it is only possible to connect NodeInput::Value (disconnected export), or NodeInput::Node (link to node) to an export (UI only export node). It is not possible to connect an import directly to the export, which would result in a NodeInput::Import. To fix this, the flattening processing in `flatten_with_fns` will have to be adjusted to include exports when setting a NodeInput::Import to whatever that parent nodes input is.

I started some code, which outlines the general idea, but I could not get it to compile. I think this is an interesting problem to solve, which requires understanding the flattening process during compilation, and how to adapt the various methods to work with the network exports vec, rather than the node inputs vec.

Some relevant starting points are uncommenting the (None, None) case in `NodeGraphMessage::ConnectNodesByLink`, removing the reconnect restriction in `remove_references_from_network`, and understanding `flatten_with_fns`.

There are also some pictures and helpful discussion here:
https://discord.com/channels/731730685944922173/1238015208534966313/1239327786104262730
![image](https://github.com/GraphiteEditor/Graphite/assets/116332429/a60b2e8c-e7b6-41c3-952a-a0f1d86df0b3)

https://discord.com/channels/731730685944922173/1238015208534966313/1240797177467506688
![image](https://github.com/GraphiteEditor/Graphite/assets/116332429/7b9bf657-04b6-4c4d-b7a1-71ee448b6ef5)

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Start by examining NodeGraphMessage::ConnectNodesByLink, the reconnect restriction in remove_references_from_network, and flatten_with_fns. Trace how network exports and node inputs are handled during flattening, using the linked discussion and diagrams for context. Done means an import can connect directly to an export and flattening produces the corresponding NodeInput::Import without breaking existing connections.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
rust
Bereich
backend, compilers
Issue-Typ
Feature
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.