-- | A sensible starting state for the program.
defaultState :: ProgramState
defaultState = ProgramState
  { _cameraShift = CameraShift 3.8 6.8 15
  , _mouseState = MouseState Up Up Up
  , _angleState = 0.0
  , _dragState = (MouseState Up Up Up, Nothing)
  , _extraInfo = []
  , _flags = [ Flags, Lights, FramesPerSecond
             , Main.Fill, DragInfo, MouseInfo, ShiftInfo
             , Shapes, Axis, FocusPoint
             ]
  , _timeState = (secondsToDiffTime 0, 0, 0)
  , _cameraFocus = (Vertex3 0 0 0 : map tvd (cubeCorners cubeSize), 0)
  }
defaultState :: ProgramState
defaultState = ProgramState
  { _cameraShift = CameraShift 3.8 6.8 15
  , _mouseState = MouseState Up Up Up
  , _angleState = 0.0
  , _dragState = (MouseState Up Up Up, Nothing)
  , _extraInfo = []
  , _flags = [ Flags, Lights, FramesPerSecond
             , Main.Fill, DragInfo, MouseInfo, ShiftInfo
             , Shapes, Axis, FocusPoint
             ]
  , _timeState = (secondsToDiffTime 0, 0, 0)
  , _cameraFocus = (Vertex3 0 0 0 : map tvd (cubeCorners cubeSize), 0)
  }
defaultState = ProgramState
  { _cameraShift = CameraShift 3.8 6.8 15
  , _mouseState = MouseState Up Up Up
  , _angleState = 0.0
  , _dragState = (MouseState Up Up Up, Nothing)
  , _extraInfo = []
  , _flags = [ Flags, Lights, FramesPerSecond
             , Main.Fill, DragInfo, MouseInfo, ShiftInfo
             , Shapes, Axis, FocusPoint
             ]
  , _timeState = (secondsToDiffTime 0, 0, 0)
  , _cameraFocus = (Vertex3 0 0 0 : map tvd (cubeCorners cubeSize), 0)
  }