{-# LANGUAGE TypeApplications #-}
#if !defined(__HADDOCK_VERSION__)
#define ENABLE_OVERLOADING
#endif
module GI.Graphene.Structs.Ray
(
Ray(..) ,
newZeroRay ,
#if defined(ENABLE_OVERLOADING)
ResolveRayMethod ,
#endif
rayAlloc ,
#if defined(ENABLE_OVERLOADING)
RayEqualMethodInfo ,
#endif
rayEqual ,
#if defined(ENABLE_OVERLOADING)
RayFreeMethodInfo ,
#endif
rayFree ,
#if defined(ENABLE_OVERLOADING)
RayGetClosestPointToPointMethodInfo ,
#endif
rayGetClosestPointToPoint ,
#if defined(ENABLE_OVERLOADING)
RayGetDirectionMethodInfo ,
#endif
rayGetDirection ,
#if defined(ENABLE_OVERLOADING)
RayGetDistanceToPlaneMethodInfo ,
#endif
rayGetDistanceToPlane ,
#if defined(ENABLE_OVERLOADING)
RayGetDistanceToPointMethodInfo ,
#endif
rayGetDistanceToPoint ,
#if defined(ENABLE_OVERLOADING)
RayGetOriginMethodInfo ,
#endif
rayGetOrigin ,
#if defined(ENABLE_OVERLOADING)
RayGetPositionAtMethodInfo ,
#endif
rayGetPositionAt ,
#if defined(ENABLE_OVERLOADING)
RayInitMethodInfo ,
#endif
rayInit ,
#if defined(ENABLE_OVERLOADING)
RayInitFromRayMethodInfo ,
#endif
rayInitFromRay ,
#if defined(ENABLE_OVERLOADING)
RayInitFromVec3MethodInfo ,
#endif
rayInitFromVec3 ,
#if defined(ENABLE_OVERLOADING)
RayIntersectBoxMethodInfo ,
#endif
rayIntersectBox ,
#if defined(ENABLE_OVERLOADING)
RayIntersectSphereMethodInfo ,
#endif
rayIntersectSphere ,
#if defined(ENABLE_OVERLOADING)
RayIntersectTriangleMethodInfo ,
#endif
rayIntersectTriangle ,
#if defined(ENABLE_OVERLOADING)
RayIntersectsBoxMethodInfo ,
#endif
rayIntersectsBox ,
#if defined(ENABLE_OVERLOADING)
RayIntersectsSphereMethodInfo ,
#endif
rayIntersectsSphere ,
#if defined(ENABLE_OVERLOADING)
RayIntersectsTriangleMethodInfo ,
#endif
rayIntersectsTriangle ,
) where
import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P
import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.BasicTypes as B.Types
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GArray as B.GArray
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GHashTable as B.GHT
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.GI.Base.Properties as B.Properties
import qualified Data.GI.Base.Signals as B.Signals
import qualified Control.Monad.IO.Class as MIO
import qualified Data.Coerce as Coerce
import qualified Data.Text as T
import qualified Data.Kind as DK
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP
import qualified GHC.OverloadedLabels as OL
import qualified GHC.Records as R
import qualified Data.Word as DW
import qualified Data.Int as DI
import qualified System.Posix.Types as SPT
import qualified Foreign.C.Types as FCT
#if MIN_VERSION_base(4,18,0)
import {-# SOURCE #-} qualified GI.Graphene.Enums as Graphene.Enums
import {-# SOURCE #-} qualified GI.Graphene.Structs.Box as Graphene.Box
import {-# SOURCE #-} qualified GI.Graphene.Structs.Euler as Graphene.Euler
import {-# SOURCE #-} qualified GI.Graphene.Structs.Matrix as Graphene.Matrix
import {-# SOURCE #-} qualified GI.Graphene.Structs.Plane as Graphene.Plane
import {-# SOURCE #-} qualified GI.Graphene.Structs.Point as Graphene.Point
import {-# SOURCE #-} qualified GI.Graphene.Structs.Point3D as Graphene.Point3D
import {-# SOURCE #-} qualified GI.Graphene.Structs.Quad as Graphene.Quad
import {-# SOURCE #-} qualified GI.Graphene.Structs.Quaternion as Graphene.Quaternion
import {-# SOURCE #-} qualified GI.Graphene.Structs.Rect as Graphene.Rect
import {-# SOURCE #-} qualified GI.Graphene.Structs.Size as Graphene.Size
import {-# SOURCE #-} qualified GI.Graphene.Structs.Sphere as Graphene.Sphere
import {-# SOURCE #-} qualified GI.Graphene.Structs.Triangle as Graphene.Triangle
import {-# SOURCE #-} qualified GI.Graphene.Structs.Vec2 as Graphene.Vec2
import {-# SOURCE #-} qualified GI.Graphene.Structs.Vec3 as Graphene.Vec3
import {-# SOURCE #-} qualified GI.Graphene.Structs.Vec4 as Graphene.Vec4
#else
import {-# SOURCE #-} qualified GI.Graphene.Enums as Graphene.Enums
import {-# SOURCE #-} qualified GI.Graphene.Structs.Box as Graphene.Box
import {-# SOURCE #-} qualified GI.Graphene.Structs.Plane as Graphene.Plane
import {-# SOURCE #-} qualified GI.Graphene.Structs.Point3D as Graphene.Point3D
import {-# SOURCE #-} qualified GI.Graphene.Structs.Sphere as Graphene.Sphere
import {-# SOURCE #-} qualified GI.Graphene.Structs.Triangle as Graphene.Triangle
import {-# SOURCE #-} qualified GI.Graphene.Structs.Vec3 as Graphene.Vec3
#endif
newtype Ray = Ray (SP.ManagedPtr Ray)
deriving (Ray -> Ray -> Bool
(Ray -> Ray -> Bool) -> (Ray -> Ray -> Bool) -> Eq Ray
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Ray -> Ray -> Bool
== :: Ray -> Ray -> Bool
$c/= :: Ray -> Ray -> Bool
/= :: Ray -> Ray -> Bool
Eq)
instance SP.ManagedPtrNewtype Ray where
toManagedPtr :: Ray -> ManagedPtr Ray
toManagedPtr (Ray ManagedPtr Ray
p) = ManagedPtr Ray
p
foreign import ccall "graphene_ray_get_type" c_graphene_ray_get_type ::
IO GType
type instance O.ParentTypes Ray = '[]
instance O.HasParentTypes Ray
instance B.Types.TypedObject Ray where
glibType :: IO GType
glibType = IO GType
c_graphene_ray_get_type
instance B.Types.GBoxed Ray
instance B.GValue.IsGValue (Maybe Ray) where
gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_graphene_ray_get_type
gvalueSet_ :: Ptr GValue -> Maybe Ray -> IO ()
gvalueSet_ Ptr GValue
gv Maybe Ray
P.Nothing = Ptr GValue -> Ptr Ray -> IO ()
forall a. Ptr GValue -> Ptr a -> IO ()
B.GValue.set_boxed Ptr GValue
gv (Ptr Ray
forall a. Ptr a
FP.nullPtr :: FP.Ptr Ray)
gvalueSet_ Ptr GValue
gv (P.Just Ray
obj) = Ray -> (Ptr Ray -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr Ray
obj (Ptr GValue -> Ptr Ray -> IO ()
forall a. Ptr GValue -> Ptr a -> IO ()
B.GValue.set_boxed Ptr GValue
gv)
gvalueGet_ :: Ptr GValue -> IO (Maybe Ray)
gvalueGet_ Ptr GValue
gv = do
ptr <- Ptr GValue -> IO (Ptr Ray)
forall b. Ptr GValue -> IO (Ptr b)
B.GValue.get_boxed Ptr GValue
gv :: IO (Ptr Ray)
if ptr /= FP.nullPtr
then P.Just <$> B.ManagedPtr.newBoxed Ray ptr
else return P.Nothing
newZeroRay :: MonadIO m => m Ray
newZeroRay :: forall (m :: * -> *). MonadIO m => m Ray
newZeroRay = IO Ray -> m Ray
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Ray -> m Ray) -> IO Ray -> m Ray
forall a b. (a -> b) -> a -> b
$ Int -> IO (Ptr Ray)
forall a. GBoxed a => Int -> IO (Ptr a)
callocBoxedBytes Int
32 IO (Ptr Ray) -> (Ptr Ray -> IO Ray) -> IO Ray
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (ManagedPtr Ray -> Ray) -> Ptr Ray -> IO Ray
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapBoxed ManagedPtr Ray -> Ray
Ray
instance tag ~ 'AttrSet => Constructible Ray tag where
new :: forall (m :: * -> *).
MonadIO m =>
(ManagedPtr Ray -> Ray) -> [AttrOp Ray tag] -> m Ray
new ManagedPtr Ray -> Ray
_ [AttrOp Ray tag]
attrs = do
o <- m Ray
forall (m :: * -> *). MonadIO m => m Ray
newZeroRay
GI.Attributes.set o attrs
return o
#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList Ray
type instance O.AttributeList Ray = RayAttributeList
type RayAttributeList = ('[ ] :: [(Symbol, DK.Type)])
#endif
foreign import ccall "graphene_ray_alloc" graphene_ray_alloc ::
IO (Ptr Ray)
rayAlloc ::
(B.CallStack.HasCallStack, MonadIO m) =>
m Ray
rayAlloc :: forall (m :: * -> *). (HasCallStack, MonadIO m) => m Ray
rayAlloc = IO Ray -> m Ray
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Ray -> m Ray) -> IO Ray -> m Ray
forall a b. (a -> b) -> a -> b
$ do
result <- IO (Ptr Ray)
graphene_ray_alloc
checkUnexpectedReturnNULL "rayAlloc" result
result' <- (wrapBoxed Ray) result
return result'
#if defined(ENABLE_OVERLOADING)
#endif
foreign import ccall "graphene_ray_equal" graphene_ray_equal ::
Ptr Ray ->
Ptr Ray ->
IO CInt
rayEqual ::
(B.CallStack.HasCallStack, MonadIO m) =>
Ray
-> Ray
-> m Bool
rayEqual :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Ray -> Ray -> m Bool
rayEqual Ray
a Ray
b = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
a' <- Ray -> IO (Ptr Ray)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Ray
a
b' <- unsafeManagedPtrGetPtr b
result <- graphene_ray_equal a' b'
let result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
touchManagedPtr a
touchManagedPtr b
return result'
#if defined(ENABLE_OVERLOADING)
data RayEqualMethodInfo
instance (signature ~ (Ray -> m Bool), MonadIO m) => O.OverloadedMethod RayEqualMethodInfo Ray signature where
overloadedMethod = rayEqual
instance O.OverloadedMethodInfo RayEqualMethodInfo Ray where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Graphene.Structs.Ray.rayEqual",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-graphene-1.0.8/docs/GI-Graphene-Structs-Ray.html#v:rayEqual"
})
#endif
foreign import ccall "graphene_ray_free" graphene_ray_free ::
Ptr Ray ->
IO ()
rayFree ::
(B.CallStack.HasCallStack, MonadIO m) =>
Ray
-> m ()
rayFree :: forall (m :: * -> *). (HasCallStack, MonadIO m) => Ray -> m ()
rayFree Ray
r = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
r' <- Ray -> IO (Ptr Ray)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Ray
r
graphene_ray_free r'
touchManagedPtr r
return ()
#if defined(ENABLE_OVERLOADING)
data RayFreeMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.OverloadedMethod RayFreeMethodInfo Ray signature where
overloadedMethod = rayFree
instance O.OverloadedMethodInfo RayFreeMethodInfo Ray where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Graphene.Structs.Ray.rayFree",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-graphene-1.0.8/docs/GI-Graphene-Structs-Ray.html#v:rayFree"
})
#endif
foreign import ccall "graphene_ray_get_closest_point_to_point" graphene_ray_get_closest_point_to_point ::
Ptr Ray ->
Ptr Graphene.Point3D.Point3D ->
Ptr Graphene.Point3D.Point3D ->
IO ()
rayGetClosestPointToPoint ::
(B.CallStack.HasCallStack, MonadIO m) =>
Ray
-> Graphene.Point3D.Point3D
-> m (Graphene.Point3D.Point3D)
rayGetClosestPointToPoint :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Ray -> Point3D -> m Point3D
rayGetClosestPointToPoint Ray
r Point3D
p = IO Point3D -> m Point3D
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Point3D -> m Point3D) -> IO Point3D -> m Point3D
forall a b. (a -> b) -> a -> b
$ do
r' <- Ray -> IO (Ptr Ray)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Ray
r
p' <- unsafeManagedPtrGetPtr p
res <- SP.callocBoxedBytes 12 :: IO (Ptr Graphene.Point3D.Point3D)
graphene_ray_get_closest_point_to_point r' p' res
res' <- (wrapBoxed Graphene.Point3D.Point3D) res
touchManagedPtr r
touchManagedPtr p
return res'
#if defined(ENABLE_OVERLOADING)
data RayGetClosestPointToPointMethodInfo
instance (signature ~ (Graphene.Point3D.Point3D -> m (Graphene.Point3D.Point3D)), MonadIO m) => O.OverloadedMethod RayGetClosestPointToPointMethodInfo Ray signature where
overloadedMethod = rayGetClosestPointToPoint
instance O.OverloadedMethodInfo RayGetClosestPointToPointMethodInfo Ray where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Graphene.Structs.Ray.rayGetClosestPointToPoint",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-graphene-1.0.8/docs/GI-Graphene-Structs-Ray.html#v:rayGetClosestPointToPoint"
})
#endif
foreign import ccall "graphene_ray_get_direction" graphene_ray_get_direction ::
Ptr Ray ->
Ptr Graphene.Vec3.Vec3 ->
IO ()
rayGetDirection ::
(B.CallStack.HasCallStack, MonadIO m) =>
Ray
-> m (Graphene.Vec3.Vec3)
rayGetDirection :: forall (m :: * -> *). (HasCallStack, MonadIO m) => Ray -> m Vec3
rayGetDirection Ray
r = IO Vec3 -> m Vec3
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Vec3 -> m Vec3) -> IO Vec3 -> m Vec3
forall a b. (a -> b) -> a -> b
$ do
r' <- Ray -> IO (Ptr Ray)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Ray
r
direction <- SP.callocBoxedBytes 16 :: IO (Ptr Graphene.Vec3.Vec3)
graphene_ray_get_direction r' direction
direction' <- (wrapBoxed Graphene.Vec3.Vec3) direction
touchManagedPtr r
return direction'
#if defined(ENABLE_OVERLOADING)
data RayGetDirectionMethodInfo
instance (signature ~ (m (Graphene.Vec3.Vec3)), MonadIO m) => O.OverloadedMethod RayGetDirectionMethodInfo Ray signature where
overloadedMethod = rayGetDirection
instance O.OverloadedMethodInfo RayGetDirectionMethodInfo Ray where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Graphene.Structs.Ray.rayGetDirection",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-graphene-1.0.8/docs/GI-Graphene-Structs-Ray.html#v:rayGetDirection"
})
#endif
foreign import ccall "graphene_ray_get_distance_to_plane" graphene_ray_get_distance_to_plane ::
Ptr Ray ->
Ptr Graphene.Plane.Plane ->
IO CFloat
rayGetDistanceToPlane ::
(B.CallStack.HasCallStack, MonadIO m) =>
Ray
-> Graphene.Plane.Plane
-> m Float
rayGetDistanceToPlane :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Ray -> Plane -> m Float
rayGetDistanceToPlane Ray
r Plane
p = IO Float -> m Float
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Float -> m Float) -> IO Float -> m Float
forall a b. (a -> b) -> a -> b
$ do
r' <- Ray -> IO (Ptr Ray)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Ray
r
p' <- unsafeManagedPtrGetPtr p
result <- graphene_ray_get_distance_to_plane r' p'
let result' = CFloat -> Float
forall a b. (Real a, Fractional b) => a -> b
realToFrac CFloat
result
touchManagedPtr r
touchManagedPtr p
return result'
#if defined(ENABLE_OVERLOADING)
data RayGetDistanceToPlaneMethodInfo
instance (signature ~ (Graphene.Plane.Plane -> m Float), MonadIO m) => O.OverloadedMethod RayGetDistanceToPlaneMethodInfo Ray signature where
overloadedMethod = rayGetDistanceToPlane
instance O.OverloadedMethodInfo RayGetDistanceToPlaneMethodInfo Ray where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Graphene.Structs.Ray.rayGetDistanceToPlane",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-graphene-1.0.8/docs/GI-Graphene-Structs-Ray.html#v:rayGetDistanceToPlane"
})
#endif
foreign import ccall "graphene_ray_get_distance_to_point" graphene_ray_get_distance_to_point ::
Ptr Ray ->
Ptr Graphene.Point3D.Point3D ->
IO CFloat
rayGetDistanceToPoint ::
(B.CallStack.HasCallStack, MonadIO m) =>
Ray
-> Graphene.Point3D.Point3D
-> m Float
rayGetDistanceToPoint :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Ray -> Point3D -> m Float
rayGetDistanceToPoint Ray
r Point3D
p = IO Float -> m Float
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Float -> m Float) -> IO Float -> m Float
forall a b. (a -> b) -> a -> b
$ do
r' <- Ray -> IO (Ptr Ray)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Ray
r
p' <- unsafeManagedPtrGetPtr p
result <- graphene_ray_get_distance_to_point r' p'
let result' = CFloat -> Float
forall a b. (Real a, Fractional b) => a -> b
realToFrac CFloat
result
touchManagedPtr r
touchManagedPtr p
return result'
#if defined(ENABLE_OVERLOADING)
data RayGetDistanceToPointMethodInfo
instance (signature ~ (Graphene.Point3D.Point3D -> m Float), MonadIO m) => O.OverloadedMethod RayGetDistanceToPointMethodInfo Ray signature where
overloadedMethod = rayGetDistanceToPoint
instance O.OverloadedMethodInfo RayGetDistanceToPointMethodInfo Ray where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Graphene.Structs.Ray.rayGetDistanceToPoint",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-graphene-1.0.8/docs/GI-Graphene-Structs-Ray.html#v:rayGetDistanceToPoint"
})
#endif
foreign import ccall "graphene_ray_get_origin" graphene_ray_get_origin ::
Ptr Ray ->
Ptr Graphene.Point3D.Point3D ->
IO ()
rayGetOrigin ::
(B.CallStack.HasCallStack, MonadIO m) =>
Ray
-> m (Graphene.Point3D.Point3D)
rayGetOrigin :: forall (m :: * -> *). (HasCallStack, MonadIO m) => Ray -> m Point3D
rayGetOrigin Ray
r = IO Point3D -> m Point3D
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Point3D -> m Point3D) -> IO Point3D -> m Point3D
forall a b. (a -> b) -> a -> b
$ do
r' <- Ray -> IO (Ptr Ray)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Ray
r
origin <- SP.callocBoxedBytes 12 :: IO (Ptr Graphene.Point3D.Point3D)
graphene_ray_get_origin r' origin
origin' <- (wrapBoxed Graphene.Point3D.Point3D) origin
touchManagedPtr r
return origin'
#if defined(ENABLE_OVERLOADING)
data RayGetOriginMethodInfo
instance (signature ~ (m (Graphene.Point3D.Point3D)), MonadIO m) => O.OverloadedMethod RayGetOriginMethodInfo Ray signature where
overloadedMethod = rayGetOrigin
instance O.OverloadedMethodInfo RayGetOriginMethodInfo Ray where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Graphene.Structs.Ray.rayGetOrigin",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-graphene-1.0.8/docs/GI-Graphene-Structs-Ray.html#v:rayGetOrigin"
})
#endif
foreign import ccall "graphene_ray_get_position_at" graphene_ray_get_position_at ::
Ptr Ray ->
CFloat ->
Ptr Graphene.Point3D.Point3D ->
IO ()
rayGetPositionAt ::
(B.CallStack.HasCallStack, MonadIO m) =>
Ray
-> Float
-> m (Graphene.Point3D.Point3D)
rayGetPositionAt :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Ray -> Float -> m Point3D
rayGetPositionAt Ray
r Float
t = IO Point3D -> m Point3D
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Point3D -> m Point3D) -> IO Point3D -> m Point3D
forall a b. (a -> b) -> a -> b
$ do
r' <- Ray -> IO (Ptr Ray)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Ray
r
let t' = Float -> CFloat
forall a b. (Real a, Fractional b) => a -> b
realToFrac Float
t
position <- SP.callocBoxedBytes 12 :: IO (Ptr Graphene.Point3D.Point3D)
graphene_ray_get_position_at r' t' position
position' <- (wrapBoxed Graphene.Point3D.Point3D) position
touchManagedPtr r
return position'
#if defined(ENABLE_OVERLOADING)
data RayGetPositionAtMethodInfo
instance (signature ~ (Float -> m (Graphene.Point3D.Point3D)), MonadIO m) => O.OverloadedMethod RayGetPositionAtMethodInfo Ray signature where
overloadedMethod = rayGetPositionAt
instance O.OverloadedMethodInfo RayGetPositionAtMethodInfo Ray where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Graphene.Structs.Ray.rayGetPositionAt",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-graphene-1.0.8/docs/GI-Graphene-Structs-Ray.html#v:rayGetPositionAt"
})
#endif
foreign import ccall "graphene_ray_init" graphene_ray_init ::
Ptr Ray ->
Ptr Graphene.Point3D.Point3D ->
Ptr Graphene.Vec3.Vec3 ->
IO (Ptr Ray)
rayInit ::
(B.CallStack.HasCallStack, MonadIO m) =>
Ray
-> Maybe (Graphene.Point3D.Point3D)
-> Maybe (Graphene.Vec3.Vec3)
-> m Ray
rayInit :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Ray -> Maybe Point3D -> Maybe Vec3 -> m Ray
rayInit Ray
r Maybe Point3D
origin Maybe Vec3
direction = IO Ray -> m Ray
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Ray -> m Ray) -> IO Ray -> m Ray
forall a b. (a -> b) -> a -> b
$ do
r' <- Ray -> IO (Ptr Ray)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Ray
r
maybeOrigin <- case origin of
Maybe Point3D
Nothing -> Ptr Point3D -> IO (Ptr Point3D)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Point3D
forall a. Ptr a
FP.nullPtr
Just Point3D
jOrigin -> do
jOrigin' <- Point3D -> IO (Ptr Point3D)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Point3D
jOrigin
return jOrigin'
maybeDirection <- case direction of
Maybe Vec3
Nothing -> Ptr Vec3 -> IO (Ptr Vec3)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Vec3
forall a. Ptr a
FP.nullPtr
Just Vec3
jDirection -> do
jDirection' <- Vec3 -> IO (Ptr Vec3)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Vec3
jDirection
return jDirection'
result <- graphene_ray_init r' maybeOrigin maybeDirection
checkUnexpectedReturnNULL "rayInit" result
result' <- (newBoxed Ray) result
touchManagedPtr r
whenJust origin touchManagedPtr
whenJust direction touchManagedPtr
return result'
#if defined(ENABLE_OVERLOADING)
data RayInitMethodInfo
instance (signature ~ (Maybe (Graphene.Point3D.Point3D) -> Maybe (Graphene.Vec3.Vec3) -> m Ray), MonadIO m) => O.OverloadedMethod RayInitMethodInfo Ray signature where
overloadedMethod = rayInit
instance O.OverloadedMethodInfo RayInitMethodInfo Ray where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Graphene.Structs.Ray.rayInit",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-graphene-1.0.8/docs/GI-Graphene-Structs-Ray.html#v:rayInit"
})
#endif
foreign import ccall "graphene_ray_init_from_ray" graphene_ray_init_from_ray ::
Ptr Ray ->
Ptr Ray ->
IO (Ptr Ray)
rayInitFromRay ::
(B.CallStack.HasCallStack, MonadIO m) =>
Ray
-> Ray
-> m Ray
rayInitFromRay :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Ray -> Ray -> m Ray
rayInitFromRay Ray
r Ray
src = IO Ray -> m Ray
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Ray -> m Ray) -> IO Ray -> m Ray
forall a b. (a -> b) -> a -> b
$ do
r' <- Ray -> IO (Ptr Ray)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Ray
r
src' <- unsafeManagedPtrGetPtr src
result <- graphene_ray_init_from_ray r' src'
checkUnexpectedReturnNULL "rayInitFromRay" result
result' <- (newBoxed Ray) result
touchManagedPtr r
touchManagedPtr src
return result'
#if defined(ENABLE_OVERLOADING)
data RayInitFromRayMethodInfo
instance (signature ~ (Ray -> m Ray), MonadIO m) => O.OverloadedMethod RayInitFromRayMethodInfo Ray signature where
overloadedMethod = rayInitFromRay
instance O.OverloadedMethodInfo RayInitFromRayMethodInfo Ray where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Graphene.Structs.Ray.rayInitFromRay",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-graphene-1.0.8/docs/GI-Graphene-Structs-Ray.html#v:rayInitFromRay"
})
#endif
foreign import ccall "graphene_ray_init_from_vec3" graphene_ray_init_from_vec3 ::
Ptr Ray ->
Ptr Graphene.Vec3.Vec3 ->
Ptr Graphene.Vec3.Vec3 ->
IO (Ptr Ray)
rayInitFromVec3 ::
(B.CallStack.HasCallStack, MonadIO m) =>
Ray
-> Maybe (Graphene.Vec3.Vec3)
-> Maybe (Graphene.Vec3.Vec3)
-> m Ray
rayInitFromVec3 :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Ray -> Maybe Vec3 -> Maybe Vec3 -> m Ray
rayInitFromVec3 Ray
r Maybe Vec3
origin Maybe Vec3
direction = IO Ray -> m Ray
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Ray -> m Ray) -> IO Ray -> m Ray
forall a b. (a -> b) -> a -> b
$ do
r' <- Ray -> IO (Ptr Ray)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Ray
r
maybeOrigin <- case origin of
Maybe Vec3
Nothing -> Ptr Vec3 -> IO (Ptr Vec3)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Vec3
forall a. Ptr a
FP.nullPtr
Just Vec3
jOrigin -> do
jOrigin' <- Vec3 -> IO (Ptr Vec3)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Vec3
jOrigin
return jOrigin'
maybeDirection <- case direction of
Maybe Vec3
Nothing -> Ptr Vec3 -> IO (Ptr Vec3)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Vec3
forall a. Ptr a
FP.nullPtr
Just Vec3
jDirection -> do
jDirection' <- Vec3 -> IO (Ptr Vec3)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Vec3
jDirection
return jDirection'
result <- graphene_ray_init_from_vec3 r' maybeOrigin maybeDirection
checkUnexpectedReturnNULL "rayInitFromVec3" result
result' <- (newBoxed Ray) result
touchManagedPtr r
whenJust origin touchManagedPtr
whenJust direction touchManagedPtr
return result'
#if defined(ENABLE_OVERLOADING)
data RayInitFromVec3MethodInfo
instance (signature ~ (Maybe (Graphene.Vec3.Vec3) -> Maybe (Graphene.Vec3.Vec3) -> m Ray), MonadIO m) => O.OverloadedMethod RayInitFromVec3MethodInfo Ray signature where
overloadedMethod = rayInitFromVec3
instance O.OverloadedMethodInfo RayInitFromVec3MethodInfo Ray where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Graphene.Structs.Ray.rayInitFromVec3",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-graphene-1.0.8/docs/GI-Graphene-Structs-Ray.html#v:rayInitFromVec3"
})
#endif
foreign import ccall "graphene_ray_intersect_box" graphene_ray_intersect_box ::
Ptr Ray ->
Ptr Graphene.Box.Box ->
Ptr CFloat ->
IO CUInt
rayIntersectBox ::
(B.CallStack.HasCallStack, MonadIO m) =>
Ray
-> Graphene.Box.Box
-> m ((Graphene.Enums.RayIntersectionKind, Float))
rayIntersectBox :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Ray -> Box -> m (RayIntersectionKind, Float)
rayIntersectBox Ray
r Box
b = IO (RayIntersectionKind, Float) -> m (RayIntersectionKind, Float)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (RayIntersectionKind, Float) -> m (RayIntersectionKind, Float))
-> IO (RayIntersectionKind, Float)
-> m (RayIntersectionKind, Float)
forall a b. (a -> b) -> a -> b
$ do
r' <- Ray -> IO (Ptr Ray)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Ray
r
b' <- unsafeManagedPtrGetPtr b
tOut <- allocMem :: IO (Ptr CFloat)
result <- graphene_ray_intersect_box r' b' tOut
let result' = (Int -> RayIntersectionKind
forall a. Enum a => Int -> a
toEnum (Int -> RayIntersectionKind)
-> (CUInt -> Int) -> CUInt -> RayIntersectionKind
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CUInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral) CUInt
result
tOut' <- peek tOut
let tOut'' = CFloat -> Float
forall a b. (Real a, Fractional b) => a -> b
realToFrac CFloat
tOut'
touchManagedPtr r
touchManagedPtr b
freeMem tOut
return (result', tOut'')
#if defined(ENABLE_OVERLOADING)
data RayIntersectBoxMethodInfo
instance (signature ~ (Graphene.Box.Box -> m ((Graphene.Enums.RayIntersectionKind, Float))), MonadIO m) => O.OverloadedMethod RayIntersectBoxMethodInfo Ray signature where
overloadedMethod = rayIntersectBox
instance O.OverloadedMethodInfo RayIntersectBoxMethodInfo Ray where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Graphene.Structs.Ray.rayIntersectBox",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-graphene-1.0.8/docs/GI-Graphene-Structs-Ray.html#v:rayIntersectBox"
})
#endif
foreign import ccall "graphene_ray_intersect_sphere" graphene_ray_intersect_sphere ::
Ptr Ray ->
Ptr Graphene.Sphere.Sphere ->
Ptr CFloat ->
IO CUInt
rayIntersectSphere ::
(B.CallStack.HasCallStack, MonadIO m) =>
Ray
-> Graphene.Sphere.Sphere
-> m ((Graphene.Enums.RayIntersectionKind, Float))
rayIntersectSphere :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Ray -> Sphere -> m (RayIntersectionKind, Float)
rayIntersectSphere Ray
r Sphere
s = IO (RayIntersectionKind, Float) -> m (RayIntersectionKind, Float)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (RayIntersectionKind, Float) -> m (RayIntersectionKind, Float))
-> IO (RayIntersectionKind, Float)
-> m (RayIntersectionKind, Float)
forall a b. (a -> b) -> a -> b
$ do
r' <- Ray -> IO (Ptr Ray)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Ray
r
s' <- unsafeManagedPtrGetPtr s
tOut <- allocMem :: IO (Ptr CFloat)
result <- graphene_ray_intersect_sphere r' s' tOut
let result' = (Int -> RayIntersectionKind
forall a. Enum a => Int -> a
toEnum (Int -> RayIntersectionKind)
-> (CUInt -> Int) -> CUInt -> RayIntersectionKind
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CUInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral) CUInt
result
tOut' <- peek tOut
let tOut'' = CFloat -> Float
forall a b. (Real a, Fractional b) => a -> b
realToFrac CFloat
tOut'
touchManagedPtr r
touchManagedPtr s
freeMem tOut
return (result', tOut'')
#if defined(ENABLE_OVERLOADING)
data RayIntersectSphereMethodInfo
instance (signature ~ (Graphene.Sphere.Sphere -> m ((Graphene.Enums.RayIntersectionKind, Float))), MonadIO m) => O.OverloadedMethod RayIntersectSphereMethodInfo Ray signature where
overloadedMethod = rayIntersectSphere
instance O.OverloadedMethodInfo RayIntersectSphereMethodInfo Ray where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Graphene.Structs.Ray.rayIntersectSphere",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-graphene-1.0.8/docs/GI-Graphene-Structs-Ray.html#v:rayIntersectSphere"
})
#endif
foreign import ccall "graphene_ray_intersect_triangle" graphene_ray_intersect_triangle ::
Ptr Ray ->
Ptr Graphene.Triangle.Triangle ->
Ptr CFloat ->
IO CUInt
rayIntersectTriangle ::
(B.CallStack.HasCallStack, MonadIO m) =>
Ray
-> Graphene.Triangle.Triangle
-> m ((Graphene.Enums.RayIntersectionKind, Float))
rayIntersectTriangle :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Ray -> Triangle -> m (RayIntersectionKind, Float)
rayIntersectTriangle Ray
r Triangle
t = IO (RayIntersectionKind, Float) -> m (RayIntersectionKind, Float)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (RayIntersectionKind, Float) -> m (RayIntersectionKind, Float))
-> IO (RayIntersectionKind, Float)
-> m (RayIntersectionKind, Float)
forall a b. (a -> b) -> a -> b
$ do
r' <- Ray -> IO (Ptr Ray)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Ray
r
t' <- unsafeManagedPtrGetPtr t
tOut <- allocMem :: IO (Ptr CFloat)
result <- graphene_ray_intersect_triangle r' t' tOut
let result' = (Int -> RayIntersectionKind
forall a. Enum a => Int -> a
toEnum (Int -> RayIntersectionKind)
-> (CUInt -> Int) -> CUInt -> RayIntersectionKind
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CUInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral) CUInt
result
tOut' <- peek tOut
let tOut'' = CFloat -> Float
forall a b. (Real a, Fractional b) => a -> b
realToFrac CFloat
tOut'
touchManagedPtr r
touchManagedPtr t
freeMem tOut
return (result', tOut'')
#if defined(ENABLE_OVERLOADING)
data RayIntersectTriangleMethodInfo
instance (signature ~ (Graphene.Triangle.Triangle -> m ((Graphene.Enums.RayIntersectionKind, Float))), MonadIO m) => O.OverloadedMethod RayIntersectTriangleMethodInfo Ray signature where
overloadedMethod = rayIntersectTriangle
instance O.OverloadedMethodInfo RayIntersectTriangleMethodInfo Ray where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Graphene.Structs.Ray.rayIntersectTriangle",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-graphene-1.0.8/docs/GI-Graphene-Structs-Ray.html#v:rayIntersectTriangle"
})
#endif
foreign import ccall "graphene_ray_intersects_box" graphene_ray_intersects_box ::
Ptr Ray ->
Ptr Graphene.Box.Box ->
IO CInt
rayIntersectsBox ::
(B.CallStack.HasCallStack, MonadIO m) =>
Ray
-> Graphene.Box.Box
-> m Bool
rayIntersectsBox :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Ray -> Box -> m Bool
rayIntersectsBox Ray
r Box
b = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
r' <- Ray -> IO (Ptr Ray)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Ray
r
b' <- unsafeManagedPtrGetPtr b
result <- graphene_ray_intersects_box r' b'
let result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
touchManagedPtr r
touchManagedPtr b
return result'
#if defined(ENABLE_OVERLOADING)
data RayIntersectsBoxMethodInfo
instance (signature ~ (Graphene.Box.Box -> m Bool), MonadIO m) => O.OverloadedMethod RayIntersectsBoxMethodInfo Ray signature where
overloadedMethod = rayIntersectsBox
instance O.OverloadedMethodInfo RayIntersectsBoxMethodInfo Ray where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Graphene.Structs.Ray.rayIntersectsBox",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-graphene-1.0.8/docs/GI-Graphene-Structs-Ray.html#v:rayIntersectsBox"
})
#endif
foreign import ccall "graphene_ray_intersects_sphere" graphene_ray_intersects_sphere ::
Ptr Ray ->
Ptr Graphene.Sphere.Sphere ->
IO CInt
rayIntersectsSphere ::
(B.CallStack.HasCallStack, MonadIO m) =>
Ray
-> Graphene.Sphere.Sphere
-> m Bool
rayIntersectsSphere :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Ray -> Sphere -> m Bool
rayIntersectsSphere Ray
r Sphere
s = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
r' <- Ray -> IO (Ptr Ray)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Ray
r
s' <- unsafeManagedPtrGetPtr s
result <- graphene_ray_intersects_sphere r' s'
let result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
touchManagedPtr r
touchManagedPtr s
return result'
#if defined(ENABLE_OVERLOADING)
data RayIntersectsSphereMethodInfo
instance (signature ~ (Graphene.Sphere.Sphere -> m Bool), MonadIO m) => O.OverloadedMethod RayIntersectsSphereMethodInfo Ray signature where
overloadedMethod = rayIntersectsSphere
instance O.OverloadedMethodInfo RayIntersectsSphereMethodInfo Ray where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Graphene.Structs.Ray.rayIntersectsSphere",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-graphene-1.0.8/docs/GI-Graphene-Structs-Ray.html#v:rayIntersectsSphere"
})
#endif
foreign import ccall "graphene_ray_intersects_triangle" graphene_ray_intersects_triangle ::
Ptr Ray ->
Ptr Graphene.Triangle.Triangle ->
IO CInt
rayIntersectsTriangle ::
(B.CallStack.HasCallStack, MonadIO m) =>
Ray
-> Graphene.Triangle.Triangle
-> m Bool
rayIntersectsTriangle :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Ray -> Triangle -> m Bool
rayIntersectsTriangle Ray
r Triangle
t = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
r' <- Ray -> IO (Ptr Ray)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Ray
r
t' <- unsafeManagedPtrGetPtr t
result <- graphene_ray_intersects_triangle r' t'
let result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
touchManagedPtr r
touchManagedPtr t
return result'
#if defined(ENABLE_OVERLOADING)
data RayIntersectsTriangleMethodInfo
instance (signature ~ (Graphene.Triangle.Triangle -> m Bool), MonadIO m) => O.OverloadedMethod RayIntersectsTriangleMethodInfo Ray signature where
overloadedMethod = rayIntersectsTriangle
instance O.OverloadedMethodInfo RayIntersectsTriangleMethodInfo Ray where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Graphene.Structs.Ray.rayIntersectsTriangle",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-graphene-1.0.8/docs/GI-Graphene-Structs-Ray.html#v:rayIntersectsTriangle"
})
#endif
#if defined(ENABLE_OVERLOADING)
type family ResolveRayMethod (t :: Symbol) (o :: DK.Type) :: DK.Type where
ResolveRayMethod "equal" o = RayEqualMethodInfo
ResolveRayMethod "free" o = RayFreeMethodInfo
ResolveRayMethod "init" o = RayInitMethodInfo
ResolveRayMethod "initFromRay" o = RayInitFromRayMethodInfo
ResolveRayMethod "initFromVec3" o = RayInitFromVec3MethodInfo
ResolveRayMethod "intersectBox" o = RayIntersectBoxMethodInfo
ResolveRayMethod "intersectSphere" o = RayIntersectSphereMethodInfo
ResolveRayMethod "intersectTriangle" o = RayIntersectTriangleMethodInfo
ResolveRayMethod "intersectsBox" o = RayIntersectsBoxMethodInfo
ResolveRayMethod "intersectsSphere" o = RayIntersectsSphereMethodInfo
ResolveRayMethod "intersectsTriangle" o = RayIntersectsTriangleMethodInfo
ResolveRayMethod "getClosestPointToPoint" o = RayGetClosestPointToPointMethodInfo
ResolveRayMethod "getDirection" o = RayGetDirectionMethodInfo
ResolveRayMethod "getDistanceToPlane" o = RayGetDistanceToPlaneMethodInfo
ResolveRayMethod "getDistanceToPoint" o = RayGetDistanceToPointMethodInfo
ResolveRayMethod "getOrigin" o = RayGetOriginMethodInfo
ResolveRayMethod "getPositionAt" o = RayGetPositionAtMethodInfo
ResolveRayMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveRayMethod t Ray, O.OverloadedMethod info Ray p) => OL.IsLabel t (Ray -> p) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.overloadedMethod @info
#else
fromLabel _ = O.overloadedMethod @info
#endif
#if MIN_VERSION_base(4,13,0)
instance (info ~ ResolveRayMethod t Ray, O.OverloadedMethod info Ray p, R.HasField t Ray p) => R.HasField t Ray p where
getField = O.overloadedMethod @info
#endif
instance (info ~ ResolveRayMethod t Ray, O.OverloadedMethodInfo info Ray) => OL.IsLabel t (O.MethodProxy info Ray) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.MethodProxy
#else
fromLabel _ = O.MethodProxy
#endif
#endif