-----------------------------------------------------------------------------
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
-----------------------------------------------------------------------------
module THREE.Box2
  ( -- * Types
    Box2 (..)
    -- * Methods
  , THREE.Box2.new
    -- * Properties
  , isBox2
  , THREE.Box2.min
  , THREE.Box2.max
    -- * Methods
  , clampPoint
  , clone
  , containsBox
  , containsPoint
  , copy
  , distanceToPoint
  , equals
  , expandByPoint
  , expandByScalar
  , expandByVector
  , getCenter
  , getParameter
  , getSize
  , intersect
  , intersectsBox
  , isEmpty
  , makeEmpty
  , set
  , setFromCenterAndSize
  , setFromPoints
  , translate
  , union
  ) where
-----------------------------------------------------------------------------
import           Miso hiding (set)
-----------------------------------------------------------------------------
import           THREE.Internal as THREE
import           THREE.Vector2
-----------------------------------------------------------------------------
-- | https://threejs.org/docs/#api/en/math/Box2
newtype Box2
  = Box2
  { Box2 -> JSVal
unBox2 :: JSVal
  } deriving newtype (Box2 -> IO [JSVal]
(Box2 -> IO [JSVal]) -> ToArgs Box2
forall args. (args -> IO [JSVal]) -> ToArgs args
$ctoArgs :: Box2 -> IO [JSVal]
toArgs :: Box2 -> IO [JSVal]
ToArgs, Box2 -> IO Object
(Box2 -> IO Object) -> ToObject Box2
forall a. (a -> IO Object) -> ToObject a
$ctoObject :: Box2 -> IO Object
toObject :: Box2 -> IO Object
ToObject, Box2 -> IO JSVal
(Box2 -> IO JSVal) -> ToJSVal Box2
forall a. (a -> IO JSVal) -> ToJSVal a
$ctoJSVal :: Box2 -> IO JSVal
toJSVal :: Box2 -> IO JSVal
ToJSVal)
-----------------------------------------------------------------------------
instance FromJSVal Box2 where
  fromJSVal :: JSVal -> IO (Maybe Box2)
fromJSVal = Maybe Box2 -> IO (Maybe Box2)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Maybe Box2 -> IO (Maybe Box2))
-> (JSVal -> Maybe Box2) -> JSVal -> IO (Maybe Box2)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Box2 -> Maybe Box2
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Box2 -> Maybe Box2) -> (JSVal -> Box2) -> JSVal -> Maybe Box2
forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> Box2
Box2
-----------------------------------------------------------------------------
class Box2NewParams a
instance Box2NewParams ()
instance Box2NewParams Vector2
instance Box2NewParams (Vector2, Vector2)
new :: (Box2NewParams a, ToArgs a) => a -> THREE.Three Box2
new :: forall a. (Box2NewParams a, ToArgs a) => a -> IO Box2
new = (JSVal -> Box2) -> MisoString -> a -> IO Box2
forall args con.
ToArgs args =>
(JSVal -> con) -> MisoString -> args -> Three con
THREE.new JSVal -> Box2
Box2 MisoString
"Box2"
-----------------------------------------------------------------------------

isBox2 :: ReadOnly Box2 Bool
isBox2 :: ReadOnly Box2 Bool
isBox2 = MisoString -> ReadOnly Box2 Bool
forall object return.
(FromJSVal return, ToObject object) =>
MisoString -> ReadOnly object return
readonly MisoString
"isBox2" 

min :: Property Box2 Vector2
min :: Property Box2 Vector2
min = MisoString -> Property Box2 Vector2
forall object field.
(ToObject object, ToJSVal field, FromJSVal field) =>
MisoString -> Property object field
property MisoString
"min" 

max :: Property Box2 Vector2
max :: Property Box2 Vector2
max = MisoString -> Property Box2 Vector2
forall object field.
(ToObject object, ToJSVal field, FromJSVal field) =>
MisoString -> Property object field
property MisoString
"max" 

-----------------------------------------------------------------------------

clampPoint :: Method Box2 (Vector2, Vector2) Vector2
clampPoint :: Method Box2 (Vector2, Vector2) Vector2
clampPoint = MisoString -> Method Box2 (Vector2, Vector2) Vector2
forall object return args.
(FromJSVal return, ToArgs args, ToObject object) =>
MisoString -> Method object args return
method MisoString
"clampPoint"

clone :: Method Box2 () Box2
clone :: Method Box2 () Box2
clone = MisoString -> Method Box2 () Box2
forall object return args.
(FromJSVal return, ToArgs args, ToObject object) =>
MisoString -> Method object args return
method MisoString
"clone"

containsBox :: Method Box2 Box2 Bool
containsBox :: Method Box2 Box2 Bool
containsBox = MisoString -> Method Box2 Box2 Bool
forall object return args.
(FromJSVal return, ToArgs args, ToObject object) =>
MisoString -> Method object args return
method MisoString
"containsBox"

containsPoint :: Method Box2 Vector2 Bool
containsPoint :: Method Box2 Vector2 Bool
containsPoint = MisoString -> Method Box2 Vector2 Bool
forall object return args.
(FromJSVal return, ToArgs args, ToObject object) =>
MisoString -> Method object args return
method MisoString
"containsPoint"

copy :: Method Box2 Box2 Box2
copy :: Method Box2 Box2 Box2
copy = MisoString -> Method Box2 Box2 Box2
forall object return args.
(FromJSVal return, ToArgs args, ToObject object) =>
MisoString -> Method object args return
method MisoString
"copy"

distanceToPoint :: Method Box2 Vector2 Double
distanceToPoint :: Method Box2 Vector2 Double
distanceToPoint = MisoString -> Method Box2 Vector2 Double
forall object return args.
(FromJSVal return, ToArgs args, ToObject object) =>
MisoString -> Method object args return
method MisoString
"distanceToPoint"

equals :: Method Box2 Box2 Bool
equals :: Method Box2 Box2 Bool
equals = MisoString -> Method Box2 Box2 Bool
forall object return args.
(FromJSVal return, ToArgs args, ToObject object) =>
MisoString -> Method object args return
method MisoString
"equals"

expandByPoint :: Method Box2 Vector2 Box2
expandByPoint :: Method Box2 Vector2 Box2
expandByPoint = MisoString -> Method Box2 Vector2 Box2
forall object return args.
(FromJSVal return, ToArgs args, ToObject object) =>
MisoString -> Method object args return
method MisoString
"expandByPoint"

expandByScalar :: Method Box2 Double Box2
expandByScalar :: Method Box2 Double Box2
expandByScalar = MisoString -> Method Box2 Double Box2
forall object return args.
(FromJSVal return, ToArgs args, ToObject object) =>
MisoString -> Method object args return
method MisoString
"expandByScalar"

expandByVector :: Method Box2 Vector2 Box2
expandByVector :: Method Box2 Vector2 Box2
expandByVector = MisoString -> Method Box2 Vector2 Box2
forall object return args.
(FromJSVal return, ToArgs args, ToObject object) =>
MisoString -> Method object args return
method MisoString
"expandByVector"

getCenter :: Method Box2 Vector2 Vector2
getCenter :: Method Box2 Vector2 Vector2
getCenter = MisoString -> Method Box2 Vector2 Vector2
forall object return args.
(FromJSVal return, ToArgs args, ToObject object) =>
MisoString -> Method object args return
method MisoString
"getCenter"

getParameter :: Method Box2 (Vector2, Vector2) Vector2
getParameter :: Method Box2 (Vector2, Vector2) Vector2
getParameter = MisoString -> Method Box2 (Vector2, Vector2) Vector2
forall object return args.
(FromJSVal return, ToArgs args, ToObject object) =>
MisoString -> Method object args return
method MisoString
"getParameter"

getSize :: Method Box2 Vector2 Vector2
getSize :: Method Box2 Vector2 Vector2
getSize = MisoString -> Method Box2 Vector2 Vector2
forall object return args.
(FromJSVal return, ToArgs args, ToObject object) =>
MisoString -> Method object args return
method MisoString
"getSize"

intersect :: Method Box2 Box2 Box2
intersect :: Method Box2 Box2 Box2
intersect = MisoString -> Method Box2 Box2 Box2
forall object return args.
(FromJSVal return, ToArgs args, ToObject object) =>
MisoString -> Method object args return
method MisoString
"intersect"

intersectsBox :: Method Box2 Box2 Bool
intersectsBox :: Method Box2 Box2 Bool
intersectsBox = MisoString -> Method Box2 Box2 Bool
forall object return args.
(FromJSVal return, ToArgs args, ToObject object) =>
MisoString -> Method object args return
method MisoString
"intersectsBox"

isEmpty :: Method Box2 () Bool
isEmpty :: Method Box2 () Bool
isEmpty = MisoString -> Method Box2 () Bool
forall object return args.
(FromJSVal return, ToArgs args, ToObject object) =>
MisoString -> Method object args return
method MisoString
"isEmpty"

makeEmpty :: Method Box2 () Box2
makeEmpty :: Method Box2 () Box2
makeEmpty = MisoString -> Method Box2 () Box2
forall object return args.
(FromJSVal return, ToArgs args, ToObject object) =>
MisoString -> Method object args return
method MisoString
"makeEmpty"

set :: Method Box2 (Vector2, Vector2) Box2
set :: Method Box2 (Vector2, Vector2) Box2
set = MisoString -> Method Box2 (Vector2, Vector2) Box2
forall object return args.
(FromJSVal return, ToArgs args, ToObject object) =>
MisoString -> Method object args return
method MisoString
"set"

setFromCenterAndSize :: Method Box2 (Vector2, Vector2) Box2
setFromCenterAndSize :: Method Box2 (Vector2, Vector2) Box2
setFromCenterAndSize = MisoString -> Method Box2 (Vector2, Vector2) Box2
forall object return args.
(FromJSVal return, ToArgs args, ToObject object) =>
MisoString -> Method object args return
method MisoString
"setFromCenterAndSize"

setFromPoints :: Method Box2 [Vector2] Box2
setFromPoints :: Method Box2 [Vector2] Box2
setFromPoints = MisoString -> Method Box2 [Vector2] Box2
forall object return args.
(FromJSVal return, ToArgs args, ToObject object) =>
MisoString -> Method object args return
method MisoString
"setFromPoints"

translate :: Method Box2 Vector2 Box2
translate :: Method Box2 Vector2 Box2
translate = MisoString -> Method Box2 Vector2 Box2
forall object return args.
(FromJSVal return, ToArgs args, ToObject object) =>
MisoString -> Method object args return
method MisoString
"translate"

union :: Method Box2 Vector2 Box2
union :: Method Box2 Vector2 Box2
union = MisoString -> Method Box2 Vector2 Box2
forall object return args.
(FromJSVal return, ToArgs args, ToObject object) =>
MisoString -> Method object args return
method MisoString
"union"

-----------------------------------------------------------------------------