{-# OPTIONS_GHC -fno-warn-unused-imports #-}

{-|

This is the public interface of LambdaCube.  All the other modules are
exposed for the benefit of library writers, but if you feel the need
to use any of them as a simple user, that should be considered a
defect and reported in the issue tracker.

-}

module Graphics.LambdaCube
       ( module Graphics.LambdaCube.Types
       , module Graphics.LambdaCube.MeshUtil
       , module Graphics.LambdaCube.Utility

       -- * Entry point
       , RenderSystem
       , World
       , LCM
       , runLCM

       -- * Resource management
       , PathType(..)
       , addResourceLibrary
       , readFile
       , readFile'

       -- * Scene graph management
       , addScene
       , updateTransforms
       , updateObjects

       -- ** Scene node definitions
       , Light(..)
       , LightTypes(..)
       , Camera(..)
       , RenderQueuePriority(..)
       , defaultRQP
       , node
       , camera
       , simpleCamera
       , wireCamera
       , light
       , defaultLight
       , mesh

       -- * Rendering
       , addRenderTexture
       , addRenderWindow
       , viewport
       , renderWorld
       , updateTargetSize

       -- * Vector vertex buffers
       , VectorVertexType(..)
       , VectorVertexData(..)
       , VMesh(..)
       , VSubMesh(..)
       , OperationType(..)
       , vectorVertexType
       , addVMesh
       , getVMesh
       ) where

import Graphics.LambdaCube.Light
import Graphics.LambdaCube.Loader.ResourceScript
import Graphics.LambdaCube.MeshUtil
import Graphics.LambdaCube.RenderOperation
import Graphics.LambdaCube.RenderQueue
import Graphics.LambdaCube.RenderSystem
import Graphics.LambdaCube.Resource
import Graphics.LambdaCube.SceneGraph
import Graphics.LambdaCube.Types
import Graphics.LambdaCube.Utility
import Graphics.LambdaCube.VertexBufferVector
import Graphics.LambdaCube.World as LCW

import Prelude hiding (readFile)