Я застрял с генерацией отладочного вывода для моих игровых объектов, используя Haskell / Yampa (= Arrows) (с HOOD).
Мой движок в основном запускает список игровых объектов, которые генерируют выходные состояния (линия, круг), которые затем отображаются.
data Output = Circle Position2 Double | Line Vector2
output :: [Output] -> IO ()
output oos = mapM render oos
render :: Output -> IO ()
render (Circle p r) = drawCircle p r
render (Line vec) = drawLine (Point2 0 0) vec
Объект игрока просто перемещается вправо и представляется в виде (позиционированного) круга.
playerObject :: SF () Output -- SF is an Arrow run by time
p <- mover (Point2 0 0) -< (Vector2 10 0)
returnA -< (Circle p 2.0)
mover - это просто простой интегратор (ускорение-> скорость-> позиция), в котором я хочу наблюдать за скоростью и отображать ее в качестве отладочного вывода в виде (непозиционированной) линии.
mover :: Position2 -> SF Vector2 Position2
mover position0 = proc acceleration -> do
velocity <- integral -< acceleration -- !! I want to observe velocity
position <- (position0 .+^) ^<< integral -< velocity
returnA -< position
Как создать дополнительный графический отладочный вывод для внутренних значений функций моего игрового объекта?
Что на самом деле должно произойти, так это вывод, сначала визуализируйте фактический объект (окружность), но также визуализируйте дополнительный отладочный вывод (вектор движения в виде линии). Возможно, я смогу добиться этого с помощью HOOD, но я все еще не очень хорошо говорю на Haskell и не знаю, как принять учебник HOOD для моего случая.