-----------------------------------------------------------------------------
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
-----------------------------------------------------------------------------
module THREE.Quaternion
  ( -- * Types
    Quaternion (..)
    -- * Methods
  , THREE.Quaternion.new
    -- * Properties
  ) where
-----------------------------------------------------------------------------
import           Miso
-----------------------------------------------------------------------------
import qualified THREE.Internal as THREE
-----------------------------------------------------------------------------
-- | https://threejs.org/docs/#api/en/scenes/Quaternion
newtype Quaternion
  = Quaternion
  { Quaternion -> JSVal
unQuaternionCamera :: JSVal
  } deriving (Quaternion -> IO JSVal
(Quaternion -> IO JSVal) -> ToJSVal Quaternion
forall a. (a -> IO JSVal) -> ToJSVal a
$ctoJSVal :: Quaternion -> IO JSVal
toJSVal :: Quaternion -> IO JSVal
ToJSVal, Quaternion -> IO Object
(Quaternion -> IO Object) -> ToObject Quaternion
forall a. (a -> IO Object) -> ToObject a
$ctoObject :: Quaternion -> IO Object
toObject :: Quaternion -> IO Object
ToObject, Quaternion -> IO [JSVal]
(Quaternion -> IO [JSVal]) -> ToArgs Quaternion
forall args. (args -> IO [JSVal]) -> ToArgs args
$ctoArgs :: Quaternion -> IO [JSVal]
toArgs :: Quaternion -> IO [JSVal]
ToArgs)
-----------------------------------------------------------------------------
instance FromJSVal Quaternion where
  fromJSVal :: JSVal -> IO (Maybe Quaternion)
fromJSVal = Maybe Quaternion -> IO (Maybe Quaternion)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Maybe Quaternion -> IO (Maybe Quaternion))
-> (JSVal -> Maybe Quaternion) -> JSVal -> IO (Maybe Quaternion)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Quaternion -> Maybe Quaternion
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Quaternion -> Maybe Quaternion)
-> (JSVal -> Quaternion) -> JSVal -> Maybe Quaternion
forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> Quaternion
Quaternion
-----------------------------------------------------------------------------
-- | https://threejs.org/docs/#api/en/cameras/Quaternion
new :: THREE.Three Quaternion
new :: IO Quaternion
new = (JSVal -> Quaternion)
-> MisoString -> [MisoString] -> IO Quaternion
forall args con.
ToArgs args =>
(JSVal -> con) -> MisoString -> args -> Three con
THREE.new JSVal -> Quaternion
Quaternion MisoString
"Quaternion" ([] :: [MisoString])
-----------------------------------------------------------------------------