Haskell でシーン グラフ関数レンダリング エンジンを作成しましたが、混合物に相互作用を追加する方法を考えています。
最初は、他のノードの 1 つを取り込み、そこにいくつかの IORef を適用する別の Handler ノードを持つことができると思っていました。たとえば、私が持っていた場合
x,y,z <- IORef 0
KeyboardHandler KeyboardCallBack $ Translate x y z $ Object
トラバースするとき、私は
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
そのようなことをすることは可能ですか、それとも完全に間違った方向に進んでいますか?