{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE OverloadedStrings #-}
module THREE.TextureLoader
(
TextureLoader (..)
, THREE.TextureLoader.new
, load
) where
import Miso
import THREE.Internal as THREE
import THREE.Loader
import THREE.Texture
newtype TextureLoader
= TextureLoader
{ TextureLoader -> JSVal
unTextureLoader :: JSVal
} deriving (TextureLoader -> IO [JSVal]
(TextureLoader -> IO [JSVal]) -> ToArgs TextureLoader
forall args. (args -> IO [JSVal]) -> ToArgs args
$ctoArgs :: TextureLoader -> IO [JSVal]
toArgs :: TextureLoader -> IO [JSVal]
ToArgs, TextureLoader -> IO Object
(TextureLoader -> IO Object) -> ToObject TextureLoader
forall a. (a -> IO Object) -> ToObject a
$ctoObject :: TextureLoader -> IO Object
toObject :: TextureLoader -> IO Object
ToObject, TextureLoader -> IO JSVal
(TextureLoader -> IO JSVal) -> ToJSVal TextureLoader
forall a. (a -> IO JSVal) -> ToJSVal a
$ctoJSVal :: TextureLoader -> IO JSVal
toJSVal :: TextureLoader -> IO JSVal
ToJSVal)
deriving newtype ToObject TextureLoader
ToJSVal TextureLoader
Property TextureLoader MisoString
(ToObject TextureLoader, ToJSVal TextureLoader) =>
Property TextureLoader MisoString -> Loader TextureLoader
forall loader.
(ToObject loader, ToJSVal loader) =>
Property loader MisoString -> Loader loader
$cpath :: Property TextureLoader MisoString
path :: Property TextureLoader MisoString
Loader
new :: THREE.Three TextureLoader
new :: Three TextureLoader
new = (JSVal -> TextureLoader) -> MisoString -> () -> Three TextureLoader
forall args con.
ToArgs args =>
(JSVal -> con) -> MisoString -> args -> Three con
THREE.new JSVal -> TextureLoader
TextureLoader MisoString
"TextureLoader" ()
load :: MisoString -> TextureLoader -> IO Texture
load :: MisoString -> TextureLoader -> IO Texture
load MisoString
url (TextureLoader JSVal
v) = JSVal -> Texture
Texture (JSVal -> Texture) -> IO JSVal -> IO Texture
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (JSVal
v JSVal -> MisoString -> [MisoString] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# (MisoString
"load" :: MisoString) ([MisoString] -> IO JSVal) -> [MisoString] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [MisoString
url])