J'ai créé un moteur de rendu de graphes de scène dans Haskell et je me demande comment ajouter une interaction au mélange. Dans un premier temps, j'ai pensé que je pouvais juste avoir un autre nœud Handler qui prend dans l'un des autres nœuds et ensuite il suffit de lui appliquer des IORefs. Par exemple, si je devaisAjouter une interaction dans un graphe de scène (dans Haskell)
x,y,z <- IORef 0
KeyboardHandler KeyboardCallBack $ Translate x y z $ Object
En traversant, j'aurais
KeyboardHandler keyboard drawable -> case drawable of
Translate x y z _ -> do
(Char 'q') -> x $~! (-1)
(Char 'w') -> x $~! (+1)
(Char 'a') -> y $~! (-1)
(Char 's') -> y $~! (+1)
(Char 'z') -> z $~! (-1)
(Char 'x') -> z $~! (+1)
render drawable
Est-il possible de faire quelque chose comme ça ou je vais complètement dans le mauvais sens?
Je ne suis pas sûr de l'avoir. Donc, je ne voudrais pas utiliser IORefs alors, je suppose (idéalement, je préfère ne pas le faire). Cependant, je ne suis pas sûr de savoir comment je les utiliserais dans mon graphe de scène. Comment pourrais-je mettre en œuvre quelque chose du demandé? Merci, btw! – Gentatsu
@Gentatsu 'TQueue' est, à l'intérieur, un wrapper' IORef' intelligent. –
Je ne sais toujours pas comment je l'utiliserais, cependant? L'exemple de GLFW-b semble assez spécifique, donc je ne suis pas sûr de savoir comment je pourrais l'extraire. – Gentatsu