module Graphics.GLUtil.Camera2D
(
Camera(..), track, roll, rollRad,
camera2D,
camMatrix, deg2rad) where
import Graphics.GLUtil.Camera3D hiding (camMatrix, roll, rollRad)
import qualified Graphics.GLUtil.Camera3D as C
import Linear (Conjugate, Epsilon, V2(..), V3(..), V4(..), M33)
camera2D :: (Epsilon a, RealFloat a) => Camera a
camera2D = fpsCamera
track :: (Conjugate a, Epsilon a, RealFloat a) => V2 a -> Camera a -> Camera a
track (V2 x y) = dolly (V3 x y 0)
camMatrix :: (Conjugate a, Epsilon a, RealFloat a) => Camera a -> M33 a
camMatrix = fmap getXYW . getXYW . C.camMatrix
where getXYW (V4 x y _ w) = V3 x y w
roll :: (Epsilon a, RealFloat a) => a -> Camera a -> Camera a
roll = C.roll
rollRad :: (Epsilon a, RealFloat a) => a -> Camera a -> Camera a
rollRad = C.rollRad