gltf-loader-0.1.0.0: src/Text/GLTF/Loader.hs
module Text.GLTF.Loader
( fromByteString,
fromFile,
module Text.GLTF.Loader.Errors,
module Text.GLTF.Loader.Gltf
) where
import Text.GLTF.Loader.Adapter
import Text.GLTF.Loader.BufferAccessor
import Text.GLTF.Loader.Errors
import Text.GLTF.Loader.Gltf
import Data.Either
import Lens.Micro
import RIO
( Monad((>>=)),
IsString(fromString),
String,
(<$>),
(.),
MonadIO(liftIO),
MonadUnliftIO,
ByteString,
FilePath )
import qualified Codec.GlTF as GlTF
fromByteString :: MonadUnliftIO io => ByteString -> io (Either Errors Gltf)
fromByteString = toGltfResult . GlTF.fromByteString
fromFile :: MonadUnliftIO io => FilePath -> io (Either Errors Gltf)
fromFile path = liftIO (GlTF.fromFile path) >>= toGltfResult
toGltfResult :: MonadUnliftIO io => Either String GlTF.GlTF -> io (Either Errors Gltf)
toGltfResult res
= res
& over _Left (ReadError . fromString)
& traverseOf _Right toGltfResult'
where toGltfResult' gltf = adaptGltf gltf <$> loadBuffers gltf