{-# LANGUAGE TemplateHaskell #-}
module Brick3D.State where
import Brick3D.Type
import Brick3D.Camera
import Lens.Micro.Platform
import Tart.Canvas (Canvas)
import Data.Vector (Vector)

-- | Represents one 3D environment.
data ThreeDState = ThreeDState
                   { ThreeDState -> Camera
_camera :: Camera -- ^ Only one camera is supported for now
                   -- | Screen that will be used for rendering.
                   -- We will retrive Aspect ratio from this 'Canvas'
                   , ThreeDState -> Canvas
_screen :: Canvas
                   -- | All Primitives that is in the world.
                   , ThreeDState -> Vector Primitive
_prims :: Vector Primitive
                   }
makeLenses ''ThreeDState