reanimate-1.0.0.0: examples/scene_camera.hs
#!/usr/bin/env stack
-- stack runghc --package reanimate
{-# LANGUAGE OverloadedStrings #-}
module Main(main) where
import Reanimate
import Reanimate.Builtin.Documentation
import Reanimate.Scene
import Control.Lens
import Linear.V2
main :: IO ()
main = reanimate $ docEnv $ mapA (withFillOpacity 1) $ scene $ do
cam <- newObject Camera
txt <- newObject $ center $ latex "Fixed (non-cam)"
oModify txt $
oTopY .~ screenTop
circle <- newObject $ Circle 1
cameraAttach cam circle
oModify circle $ oContext .~ withFillColor "blue"
circleRight <- oRead circle oRightX
box <- newObject $ Rectangle 2 2
cameraAttach cam box
oModify box $ oContext .~ withFillColor "green"
oModify box $ oLeftX .~ circleRight
boxCenter <- oRead box oCenterXY
small <- newObject $ center $ latex "This text is very small"
cameraAttach cam small
oModifyS small $ do
oCenterXY .= boxCenter
oScale .= 0.1
oShow txt
oShow small
oShow circle
oShow box
wait 1
cameraFocus cam boxCenter
waitOn $ do
fork $ cameraPan cam 3 boxCenter
fork $ cameraZoom cam 3 15
wait 2
waitOn $ do
fork $ cameraZoom cam 3 1
waitOn $ do
fork $ cameraPan cam 1 (V2 0 0)