module Text.GLTF.Loader
(
fromFile,
fromByteString,
module Text.GLTF.Loader.Gltf,
module Text.GLTF.Loader.Errors
) 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
import qualified Codec.GlTF as GlTF
fromByteString :: MonadUnliftIO io => ByteString -> io (Either Errors Gltf)
fromByteString :: forall (io :: * -> *).
MonadUnliftIO io =>
ByteString -> io (Either Errors Gltf)
fromByteString = forall (io :: * -> *).
MonadUnliftIO io =>
Either String GlTF -> io (Either Errors Gltf)
toGltfResult forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> Either String GlTF
GlTF.fromByteString
fromFile :: MonadUnliftIO io => FilePath -> io (Either Errors Gltf)
fromFile :: forall (io :: * -> *).
MonadUnliftIO io =>
String -> io (Either Errors Gltf)
fromFile String
path = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (String -> IO (Either String GlTF)
GlTF.fromFile String
path) forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall (io :: * -> *).
MonadUnliftIO io =>
Either String GlTF -> io (Either Errors Gltf)
toGltfResult
toGltfResult :: MonadUnliftIO io => Either String GlTF.GlTF -> io (Either Errors Gltf)
toGltfResult :: forall (io :: * -> *).
MonadUnliftIO io =>
Either String GlTF -> io (Either Errors Gltf)
toGltfResult Either String GlTF
res
= Either String GlTF
res
forall a b. a -> (a -> b) -> b
& forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
over forall a b a'. Traversal (Either a b) (Either a' b) a a'
_Left (Text -> Errors
ReadError forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. IsString a => String -> a
fromString)
forall a b. a -> (a -> b) -> b
& forall (f :: * -> *) s t a b.
LensLike f s t a b -> LensLike f s t a b
traverseOf forall a b b'. Traversal (Either a b) (Either a b') b b'
_Right forall {f :: * -> *}. MonadUnliftIO f => GlTF -> f Gltf
toGltfResult'
where toGltfResult' :: GlTF -> f Gltf
toGltfResult' GlTF
gltf = GlTF -> Vector GltfBuffer -> Gltf
adaptGltf GlTF
gltf forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (io :: * -> *).
MonadUnliftIO io =>
GlTF -> io (Vector GltfBuffer)
loadBuffers GlTF
gltf