GraphiteEditor / GraphiteEditor/Graphite

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

Ouverte
#1,762 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Architecture Graphene
Langage dominant
Rust
Étoiles
27.3k
Forks
1.3k
Merge moyen
20 h 5 min
PR mergées (30 j)
57

Description

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)

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Commencez par examiner NodeGraphMessage::ConnectNodesByLink, la restriction de reconnexion dans remove_references_from_network et flatten_with_fns. Suivez la manière dont les exports du réseau et les entrées des nœuds sont gérés pendant le flattening, en utilisant la discussion liée et les diagrammes comme contexte. Le travail est considéré comme terminé lorsqu’un import peut se connecter directement à un export et que le flattening produit le NodeInput::Import correspondant sans casser les connexions existantes.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
rust
Domaine
backend, compilers
Type d'issue
Fonctionnalité
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.