Dans le cas de champ numérique d'input, est-ce qu'il y a des moyens simples de ne pas relancer tout un calcul avec un boolean 'dirty' ?
J'ai essayé plusieurs approches pour ça, avec comme seul règle : pas de complexité pour le développeur qui l'utilise (et donc pas un flag 'dirty' à modifier à la main quand on modifie le champs).
La plus intéressante était celle avec un système qui définissait un composant public: MonComposant et un composant privé MonComposantPrivé qui hérite de MonComposant.
L'idée étant : tous les utilisateurs externes au système ne voit que MonComposant, alors que le système manipule MonComposantPrivé
Appliqué à ton exemple, on pourrait faire :
Et il est trivial de ne déclencher le traitement coûteux que si la valeur a changé.
Ou alors créer une entité qui aura un composant ValueChanged (?) par ex à chaque fois que le champs est modifié - ça pourrait avoir des effets secondaires intéressants pour gérer le Undo par ex.
[^] # Re: Systèmes à entités et événements
Posté par pepp . En réponse à la dépêche Je crée mon jeu vidéo E07 : cartes, données et systèmes à entités. Évalué à 1.
J'ai essayé plusieurs approches pour ça, avec comme seul règle : pas de complexité pour le développeur qui l'utilise (et donc pas un flag 'dirty' à modifier à la main quand on modifie le champs).
La plus intéressante était celle avec un système qui définissait un composant public: MonComposant et un composant privé MonComposantPrivé qui hérite de MonComposant.
L'idée étant : tous les utilisateurs externes au système ne voit que MonComposant, alors que le système manipule MonComposantPrivé
Appliqué à ton exemple, on pourrait faire :
Et il est trivial de ne déclencher le traitement coûteux que si la valeur a changé.
Ou alors créer une entité qui aura un composant ValueChanged (?) par ex à chaque fois que le champs est modifié - ça pourrait avoir des effets secondaires intéressants pour gérer le Undo par ex.