module Box2D.Collision
( saveRecordingToFile
, loadRecordingFromFile
, validateReplay
, isValidRay
, makePolygon
, makeOffsetPolygon
, makeOffsetRoundedPolygon
, makeSquare
, makeSquareInto
, makeBox
, makeBoxInto
, makeRoundedBox
, makeRoundedBoxInto
, makeOffsetBox
, makeOffsetRoundedBox
, transformPolygon
, computeCircleMass
, computeCapsuleMass
, computePolygonMass
, computeCircleAABB
, computeCapsuleAABB
, computePolygonAABB
, computeSegmentAABB
, pointInCircle
, pointInCapsule
, pointInPolygon
, rayCastCircle
, rayCastCapsule
, rayCastSegment
, rayCastPolygon
, shapeCastCircle
, shapeCastCapsule
, shapeCastSegment
, shapeCastPolygon
, computeHull
, computeHullInto
, validateHull
, segmentDistance
, shapeDistance
, shapeCast
, shapeCastInto
, makeProxy
, makeOffsetProxy
, getSweepTransform
, timeOfImpact
, collideCircles
, collideCapsuleAndCircle
, collideSegmentAndCircle
, collidePolygonAndCircle
, collideCapsules
, collideSegmentAndCapsule
, collidePolygonAndCapsule
, collidePolygons
, collideSegmentAndPolygon
, collideChainSegmentAndCircle
, collideChainSegmentAndCapsule
, collideChainSegmentAndPolygon
, solvePlanes
, clipVector
)
where
import Foreign
import Foreign.C.Types (CBool(..), CInt(..))
import Foreign.C.String (CString)
import Box2D.MathTypes (AABB, Rot, Transform, Vec2, WorldTransform)
import Box2D.Tags (ChainSegment, CollisionPlane, DistanceInput, DistanceOutput, LocalManifold, PlaneSolverResult, Recording, SegmentDistanceResult, ShapeCastInput, ShapeCastPairInput, ShapeProxy, Simplex, SimplexCache, TOIInput, TOIOutput)
import Box2D.Types (Capsule, CastOutput, Circle, Hull, MassData, Polygon, RayCastInput, Segment, Sweep)
foreign import ccall unsafe "b2SaveRecordingToFile"
c_b2SaveRecordingToFile :: Ptr Recording -> CString -> IO CBool
foreign import ccall unsafe "b2LoadRecordingFromFile"
c_b2LoadRecordingFromFile :: CString -> IO (Ptr Recording)
foreign import ccall unsafe "b2ValidateReplay"
c_b2ValidateReplay :: Ptr () -> CInt -> CInt -> IO CBool
foreign import ccall unsafe "b2IsValidRay"
c_b2IsValidRay :: Ptr RayCastInput -> IO CBool
foreign import ccall unsafe "hsg_b2MakePolygon"
c_b2MakePolygon :: Ptr Hull -> Float -> Ptr Polygon -> IO ()
foreign import ccall unsafe "hsg_b2MakeOffsetPolygon"
c_b2MakeOffsetPolygon :: Ptr Hull -> Ptr Vec2 -> Ptr Rot -> Ptr Polygon -> IO ()
foreign import ccall unsafe "hsg_b2MakeOffsetRoundedPolygon"
c_b2MakeOffsetRoundedPolygon :: Ptr Hull -> Ptr Vec2 -> Ptr Rot -> Float -> Ptr Polygon -> IO ()
foreign import ccall unsafe "hsg_b2MakeSquare"
c_b2MakeSquare :: Float -> Ptr Polygon -> IO ()
foreign import ccall unsafe "hsg_b2MakeBox"
c_b2MakeBox :: Float -> Float -> Ptr Polygon -> IO ()
foreign import ccall unsafe "hsg_b2MakeRoundedBox"
c_b2MakeRoundedBox :: Float -> Float -> Float -> Ptr Polygon -> IO ()
foreign import ccall unsafe "hsg_b2MakeOffsetBox"
c_b2MakeOffsetBox :: Float -> Float -> Ptr Vec2 -> Ptr Rot -> Ptr Polygon -> IO ()
foreign import ccall unsafe "hsg_b2MakeOffsetRoundedBox"
c_b2MakeOffsetRoundedBox :: Float -> Float -> Ptr Vec2 -> Ptr Rot -> Float -> Ptr Polygon -> IO ()
foreign import ccall unsafe "hsg_b2TransformPolygon"
c_b2TransformPolygon :: Ptr Transform -> Ptr Polygon -> Ptr Polygon -> IO ()
foreign import ccall unsafe "hsg_b2ComputeCircleMass"
c_b2ComputeCircleMass :: Ptr Circle -> Float -> Ptr MassData -> IO ()
foreign import ccall unsafe "hsg_b2ComputeCapsuleMass"
c_b2ComputeCapsuleMass :: Ptr Capsule -> Float -> Ptr MassData -> IO ()
foreign import ccall unsafe "hsg_b2ComputePolygonMass"
c_b2ComputePolygonMass :: Ptr Polygon -> Float -> Ptr MassData -> IO ()
foreign import ccall unsafe "hsg_b2ComputeCircleAABB"
c_b2ComputeCircleAABB :: Ptr Circle -> Ptr WorldTransform -> Ptr AABB -> IO ()
foreign import ccall unsafe "hsg_b2ComputeCapsuleAABB"
c_b2ComputeCapsuleAABB :: Ptr Capsule -> Ptr WorldTransform -> Ptr AABB -> IO ()
foreign import ccall unsafe "hsg_b2ComputePolygonAABB"
c_b2ComputePolygonAABB :: Ptr Polygon -> Ptr WorldTransform -> Ptr AABB -> IO ()
foreign import ccall unsafe "hsg_b2ComputeSegmentAABB"
c_b2ComputeSegmentAABB :: Ptr Segment -> Ptr WorldTransform -> Ptr AABB -> IO ()
foreign import ccall unsafe "hsg_b2PointInCircle"
c_b2PointInCircle :: Ptr Circle -> Ptr Vec2 -> IO CBool
foreign import ccall unsafe "hsg_b2PointInCapsule"
c_b2PointInCapsule :: Ptr Capsule -> Ptr Vec2 -> IO CBool
foreign import ccall unsafe "hsg_b2PointInPolygon"
c_b2PointInPolygon :: Ptr Polygon -> Ptr Vec2 -> IO CBool
foreign import ccall unsafe "hsg_b2RayCastCircle"
c_b2RayCastCircle :: Ptr Circle -> Ptr RayCastInput -> Ptr CastOutput -> IO ()
foreign import ccall unsafe "hsg_b2RayCastCapsule"
c_b2RayCastCapsule :: Ptr Capsule -> Ptr RayCastInput -> Ptr CastOutput -> IO ()
foreign import ccall unsafe "hsg_b2RayCastSegment"
c_b2RayCastSegment :: Ptr Segment -> Ptr RayCastInput -> CBool -> Ptr CastOutput -> IO ()
foreign import ccall unsafe "hsg_b2RayCastPolygon"
c_b2RayCastPolygon :: Ptr Polygon -> Ptr RayCastInput -> Ptr CastOutput -> IO ()
foreign import ccall unsafe "hsg_b2ShapeCastCircle"
c_b2ShapeCastCircle :: Ptr Circle -> Ptr ShapeCastInput -> Ptr CastOutput -> IO ()
foreign import ccall unsafe "hsg_b2ShapeCastCapsule"
c_b2ShapeCastCapsule :: Ptr Capsule -> Ptr ShapeCastInput -> Ptr CastOutput -> IO ()
foreign import ccall unsafe "hsg_b2ShapeCastSegment"
c_b2ShapeCastSegment :: Ptr Segment -> Ptr ShapeCastInput -> Ptr CastOutput -> IO ()
foreign import ccall unsafe "hsg_b2ShapeCastPolygon"
c_b2ShapeCastPolygon :: Ptr Polygon -> Ptr ShapeCastInput -> Ptr CastOutput -> IO ()
foreign import ccall unsafe "hsg_b2ComputeHull"
c_b2ComputeHull :: Ptr Vec2 -> CInt -> Ptr Hull -> IO ()
foreign import ccall unsafe "b2ValidateHull"
c_b2ValidateHull :: Ptr Hull -> IO CBool
foreign import ccall unsafe "hsg_b2SegmentDistance"
c_b2SegmentDistance :: Ptr Vec2 -> Ptr Vec2 -> Ptr Vec2 -> Ptr Vec2 -> Ptr SegmentDistanceResult -> IO ()
foreign import ccall unsafe "hsg_b2ShapeDistance"
c_b2ShapeDistance :: Ptr DistanceInput -> Ptr SimplexCache -> Ptr Simplex -> CInt -> Ptr DistanceOutput -> IO ()
foreign import ccall unsafe "hsg_b2ShapeCast"
c_b2ShapeCast :: Ptr ShapeCastPairInput -> Ptr CastOutput -> IO ()
foreign import ccall unsafe "hsg_b2MakeProxy"
c_b2MakeProxy :: Ptr Vec2 -> CInt -> Float -> Ptr ShapeProxy -> IO ()
foreign import ccall unsafe "hsg_b2MakeOffsetProxy"
c_b2MakeOffsetProxy :: Ptr Vec2 -> CInt -> Float -> Ptr Vec2 -> Ptr Rot -> Ptr ShapeProxy -> IO ()
foreign import ccall unsafe "hsg_b2GetSweepTransform"
c_b2GetSweepTransform :: Ptr Sweep -> Float -> Ptr Transform -> IO ()
foreign import ccall unsafe "hsg_b2TimeOfImpact"
c_b2TimeOfImpact :: Ptr TOIInput -> Ptr TOIOutput -> IO ()
foreign import ccall unsafe "hsg_b2CollideCircles"
c_b2CollideCircles :: Ptr Circle -> Ptr Circle -> Ptr Transform -> Ptr LocalManifold -> IO ()
foreign import ccall unsafe "hsg_b2CollideCapsuleAndCircle"
c_b2CollideCapsuleAndCircle :: Ptr Capsule -> Ptr Circle -> Ptr Transform -> Ptr LocalManifold -> IO ()
foreign import ccall unsafe "hsg_b2CollideSegmentAndCircle"
c_b2CollideSegmentAndCircle :: Ptr Segment -> Ptr Circle -> Ptr Transform -> Ptr LocalManifold -> IO ()
foreign import ccall unsafe "hsg_b2CollidePolygonAndCircle"
c_b2CollidePolygonAndCircle :: Ptr Polygon -> Ptr Circle -> Ptr Transform -> Ptr LocalManifold -> IO ()
foreign import ccall unsafe "hsg_b2CollideCapsules"
c_b2CollideCapsules :: Ptr Capsule -> Ptr Capsule -> Ptr Transform -> Ptr LocalManifold -> IO ()
foreign import ccall unsafe "hsg_b2CollideSegmentAndCapsule"
c_b2CollideSegmentAndCapsule :: Ptr Segment -> Ptr Capsule -> Ptr Transform -> Ptr LocalManifold -> IO ()
foreign import ccall unsafe "hsg_b2CollidePolygonAndCapsule"
c_b2CollidePolygonAndCapsule :: Ptr Polygon -> Ptr Capsule -> Ptr Transform -> Ptr LocalManifold -> IO ()
foreign import ccall unsafe "hsg_b2CollidePolygons"
c_b2CollidePolygons :: Ptr Polygon -> Ptr Polygon -> Ptr Transform -> Ptr LocalManifold -> IO ()
foreign import ccall unsafe "hsg_b2CollideSegmentAndPolygon"
c_b2CollideSegmentAndPolygon :: Ptr Segment -> Ptr Polygon -> Ptr Transform -> Ptr LocalManifold -> IO ()
foreign import ccall unsafe "hsg_b2CollideChainSegmentAndCircle"
c_b2CollideChainSegmentAndCircle :: Ptr ChainSegment -> Ptr Circle -> Ptr Transform -> Ptr LocalManifold -> IO ()
foreign import ccall unsafe "hsg_b2CollideChainSegmentAndCapsule"
c_b2CollideChainSegmentAndCapsule :: Ptr ChainSegment -> Ptr Capsule -> Ptr Transform -> Ptr SimplexCache -> Ptr LocalManifold -> IO ()
foreign import ccall unsafe "hsg_b2CollideChainSegmentAndPolygon"
c_b2CollideChainSegmentAndPolygon :: Ptr ChainSegment -> Ptr Polygon -> Ptr Transform -> Ptr SimplexCache -> Ptr LocalManifold -> IO ()
foreign import ccall unsafe "hsg_b2SolvePlanes"
c_b2SolvePlanes :: Ptr Vec2 -> Ptr CollisionPlane -> CInt -> Ptr PlaneSolverResult -> IO ()
foreign import ccall unsafe "hsg_b2ClipVector"
c_b2ClipVector :: Ptr Vec2 -> Ptr CollisionPlane -> CInt -> Ptr Vec2 -> IO ()
saveRecordingToFile
:: Ptr Recording
-> CString
-> IO Bool
saveRecordingToFile :: Ptr Recording -> CString -> IO Bool
saveRecordingToFile Ptr Recording
a0 CString
a1 =
CBool -> Bool
forall a. (Eq a, Num a) => a -> Bool
toBool (CBool -> Bool) -> IO CBool -> IO Bool
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Ptr Recording -> CString -> IO CBool
c_b2SaveRecordingToFile Ptr Recording
a0 CString
a1)
loadRecordingFromFile
:: CString
-> IO (Ptr Recording)
loadRecordingFromFile :: CString -> IO (Ptr Recording)
loadRecordingFromFile CString
a0 =
CString -> IO (Ptr Recording)
c_b2LoadRecordingFromFile CString
a0
validateReplay
:: Ptr ()
-> Int
-> Int
-> IO Bool
validateReplay :: Ptr () -> Int -> Int -> IO Bool
validateReplay Ptr ()
a0 Int
a1 Int
a2 =
CBool -> Bool
forall a. (Eq a, Num a) => a -> Bool
toBool (CBool -> Bool) -> IO CBool -> IO Bool
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Ptr () -> CInt -> CInt -> IO CBool
c_b2ValidateReplay Ptr ()
a0 (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
a1) (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
a2))
isValidRay
:: RayCastInput
-> IO Bool
isValidRay :: RayCastInput -> IO Bool
isValidRay RayCastInput
a0 =
RayCastInput -> (Ptr RayCastInput -> IO Bool) -> IO Bool
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with RayCastInput
a0 ((Ptr RayCastInput -> IO Bool) -> IO Bool)
-> (Ptr RayCastInput -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr RayCastInput
p0 ->
CBool -> Bool
forall a. (Eq a, Num a) => a -> Bool
toBool (CBool -> Bool) -> IO CBool -> IO Bool
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Ptr RayCastInput -> IO CBool
c_b2IsValidRay Ptr RayCastInput
p0)
makePolygon
:: Hull
-> Float
-> IO Polygon
makePolygon :: Hull -> Float -> IO Polygon
makePolygon Hull
a0 Float
a1 =
Hull -> (Ptr Hull -> IO Polygon) -> IO Polygon
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Hull
a0 ((Ptr Hull -> IO Polygon) -> IO Polygon)
-> (Ptr Hull -> IO Polygon) -> IO Polygon
forall a b. (a -> b) -> a -> b
$ \Ptr Hull
p0 ->
(Ptr Polygon -> IO Polygon) -> IO Polygon
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr Polygon -> IO Polygon) -> IO Polygon)
-> (Ptr Polygon -> IO Polygon) -> IO Polygon
forall a b. (a -> b) -> a -> b
$ \Ptr Polygon
pOut -> Ptr Hull -> Float -> Ptr Polygon -> IO ()
c_b2MakePolygon Ptr Hull
p0 Float
a1 Ptr Polygon
pOut IO () -> IO Polygon -> IO Polygon
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr Polygon -> IO Polygon
forall a. Storable a => Ptr a -> IO a
peek Ptr Polygon
pOut
makeOffsetPolygon
:: Hull
-> Vec2
-> Rot
-> IO Polygon
makeOffsetPolygon :: Hull -> Vec2 -> Rot -> IO Polygon
makeOffsetPolygon Hull
a0 Vec2
a1 Rot
a2 =
Hull -> (Ptr Hull -> IO Polygon) -> IO Polygon
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Hull
a0 ((Ptr Hull -> IO Polygon) -> IO Polygon)
-> (Ptr Hull -> IO Polygon) -> IO Polygon
forall a b. (a -> b) -> a -> b
$ \Ptr Hull
p0 ->
Vec2 -> (Ptr Vec2 -> IO Polygon) -> IO Polygon
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Vec2
a1 ((Ptr Vec2 -> IO Polygon) -> IO Polygon)
-> (Ptr Vec2 -> IO Polygon) -> IO Polygon
forall a b. (a -> b) -> a -> b
$ \Ptr Vec2
p1 ->
Rot -> (Ptr Rot -> IO Polygon) -> IO Polygon
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Rot
a2 ((Ptr Rot -> IO Polygon) -> IO Polygon)
-> (Ptr Rot -> IO Polygon) -> IO Polygon
forall a b. (a -> b) -> a -> b
$ \Ptr Rot
p2 ->
(Ptr Polygon -> IO Polygon) -> IO Polygon
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr Polygon -> IO Polygon) -> IO Polygon)
-> (Ptr Polygon -> IO Polygon) -> IO Polygon
forall a b. (a -> b) -> a -> b
$ \Ptr Polygon
pOut -> Ptr Hull -> Ptr Vec2 -> Ptr Rot -> Ptr Polygon -> IO ()
c_b2MakeOffsetPolygon Ptr Hull
p0 Ptr Vec2
p1 Ptr Rot
p2 Ptr Polygon
pOut IO () -> IO Polygon -> IO Polygon
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr Polygon -> IO Polygon
forall a. Storable a => Ptr a -> IO a
peek Ptr Polygon
pOut
makeOffsetRoundedPolygon
:: Hull
-> Vec2
-> Rot
-> Float
-> IO Polygon
makeOffsetRoundedPolygon :: Hull -> Vec2 -> Rot -> Float -> IO Polygon
makeOffsetRoundedPolygon Hull
a0 Vec2
a1 Rot
a2 Float
a3 =
Hull -> (Ptr Hull -> IO Polygon) -> IO Polygon
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Hull
a0 ((Ptr Hull -> IO Polygon) -> IO Polygon)
-> (Ptr Hull -> IO Polygon) -> IO Polygon
forall a b. (a -> b) -> a -> b
$ \Ptr Hull
p0 ->
Vec2 -> (Ptr Vec2 -> IO Polygon) -> IO Polygon
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Vec2
a1 ((Ptr Vec2 -> IO Polygon) -> IO Polygon)
-> (Ptr Vec2 -> IO Polygon) -> IO Polygon
forall a b. (a -> b) -> a -> b
$ \Ptr Vec2
p1 ->
Rot -> (Ptr Rot -> IO Polygon) -> IO Polygon
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Rot
a2 ((Ptr Rot -> IO Polygon) -> IO Polygon)
-> (Ptr Rot -> IO Polygon) -> IO Polygon
forall a b. (a -> b) -> a -> b
$ \Ptr Rot
p2 ->
(Ptr Polygon -> IO Polygon) -> IO Polygon
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr Polygon -> IO Polygon) -> IO Polygon)
-> (Ptr Polygon -> IO Polygon) -> IO Polygon
forall a b. (a -> b) -> a -> b
$ \Ptr Polygon
pOut -> Ptr Hull -> Ptr Vec2 -> Ptr Rot -> Float -> Ptr Polygon -> IO ()
c_b2MakeOffsetRoundedPolygon Ptr Hull
p0 Ptr Vec2
p1 Ptr Rot
p2 Float
a3 Ptr Polygon
pOut IO () -> IO Polygon -> IO Polygon
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr Polygon -> IO Polygon
forall a. Storable a => Ptr a -> IO a
peek Ptr Polygon
pOut
makeSquare
:: Float
-> IO Polygon
makeSquare :: Float -> IO Polygon
makeSquare Float
a0 =
(Ptr Polygon -> IO Polygon) -> IO Polygon
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr Polygon -> IO Polygon) -> IO Polygon)
-> (Ptr Polygon -> IO Polygon) -> IO Polygon
forall a b. (a -> b) -> a -> b
$ \Ptr Polygon
pOut -> Float -> Ptr Polygon -> IO ()
c_b2MakeSquare Float
a0 Ptr Polygon
pOut IO () -> IO Polygon -> IO Polygon
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr Polygon -> IO Polygon
forall a. Storable a => Ptr a -> IO a
peek Ptr Polygon
pOut
makeSquareInto
:: Float
-> Ptr Polygon
-> IO ()
makeSquareInto :: Float -> Ptr Polygon -> IO ()
makeSquareInto Float
a0 Ptr Polygon
out =
Float -> Ptr Polygon -> IO ()
c_b2MakeSquare Float
a0 Ptr Polygon
out
makeBox
:: Float
-> Float
-> IO Polygon
makeBox :: Float -> Float -> IO Polygon
makeBox Float
a0 Float
a1 =
(Ptr Polygon -> IO Polygon) -> IO Polygon
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr Polygon -> IO Polygon) -> IO Polygon)
-> (Ptr Polygon -> IO Polygon) -> IO Polygon
forall a b. (a -> b) -> a -> b
$ \Ptr Polygon
pOut -> Float -> Float -> Ptr Polygon -> IO ()
c_b2MakeBox Float
a0 Float
a1 Ptr Polygon
pOut IO () -> IO Polygon -> IO Polygon
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr Polygon -> IO Polygon
forall a. Storable a => Ptr a -> IO a
peek Ptr Polygon
pOut
makeBoxInto
:: Float
-> Float
-> Ptr Polygon
-> IO ()
makeBoxInto :: Float -> Float -> Ptr Polygon -> IO ()
makeBoxInto Float
a0 Float
a1 Ptr Polygon
out =
Float -> Float -> Ptr Polygon -> IO ()
c_b2MakeBox Float
a0 Float
a1 Ptr Polygon
out
makeRoundedBox
:: Float
-> Float
-> Float
-> IO Polygon
makeRoundedBox :: Float -> Float -> Float -> IO Polygon
makeRoundedBox Float
a0 Float
a1 Float
a2 =
(Ptr Polygon -> IO Polygon) -> IO Polygon
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr Polygon -> IO Polygon) -> IO Polygon)
-> (Ptr Polygon -> IO Polygon) -> IO Polygon
forall a b. (a -> b) -> a -> b
$ \Ptr Polygon
pOut -> Float -> Float -> Float -> Ptr Polygon -> IO ()
c_b2MakeRoundedBox Float
a0 Float
a1 Float
a2 Ptr Polygon
pOut IO () -> IO Polygon -> IO Polygon
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr Polygon -> IO Polygon
forall a. Storable a => Ptr a -> IO a
peek Ptr Polygon
pOut
makeRoundedBoxInto
:: Float
-> Float
-> Float
-> Ptr Polygon
-> IO ()
makeRoundedBoxInto :: Float -> Float -> Float -> Ptr Polygon -> IO ()
makeRoundedBoxInto Float
a0 Float
a1 Float
a2 Ptr Polygon
out =
Float -> Float -> Float -> Ptr Polygon -> IO ()
c_b2MakeRoundedBox Float
a0 Float
a1 Float
a2 Ptr Polygon
out
makeOffsetBox
:: Float
-> Float
-> Vec2
-> Rot
-> IO Polygon
makeOffsetBox :: Float -> Float -> Vec2 -> Rot -> IO Polygon
makeOffsetBox Float
a0 Float
a1 Vec2
a2 Rot
a3 =
Vec2 -> (Ptr Vec2 -> IO Polygon) -> IO Polygon
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Vec2
a2 ((Ptr Vec2 -> IO Polygon) -> IO Polygon)
-> (Ptr Vec2 -> IO Polygon) -> IO Polygon
forall a b. (a -> b) -> a -> b
$ \Ptr Vec2
p2 ->
Rot -> (Ptr Rot -> IO Polygon) -> IO Polygon
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Rot
a3 ((Ptr Rot -> IO Polygon) -> IO Polygon)
-> (Ptr Rot -> IO Polygon) -> IO Polygon
forall a b. (a -> b) -> a -> b
$ \Ptr Rot
p3 ->
(Ptr Polygon -> IO Polygon) -> IO Polygon
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr Polygon -> IO Polygon) -> IO Polygon)
-> (Ptr Polygon -> IO Polygon) -> IO Polygon
forall a b. (a -> b) -> a -> b
$ \Ptr Polygon
pOut -> Float -> Float -> Ptr Vec2 -> Ptr Rot -> Ptr Polygon -> IO ()
c_b2MakeOffsetBox Float
a0 Float
a1 Ptr Vec2
p2 Ptr Rot
p3 Ptr Polygon
pOut IO () -> IO Polygon -> IO Polygon
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr Polygon -> IO Polygon
forall a. Storable a => Ptr a -> IO a
peek Ptr Polygon
pOut
makeOffsetRoundedBox
:: Float
-> Float
-> Vec2
-> Rot
-> Float
-> IO Polygon
makeOffsetRoundedBox :: Float -> Float -> Vec2 -> Rot -> Float -> IO Polygon
makeOffsetRoundedBox Float
a0 Float
a1 Vec2
a2 Rot
a3 Float
a4 =
Vec2 -> (Ptr Vec2 -> IO Polygon) -> IO Polygon
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Vec2
a2 ((Ptr Vec2 -> IO Polygon) -> IO Polygon)
-> (Ptr Vec2 -> IO Polygon) -> IO Polygon
forall a b. (a -> b) -> a -> b
$ \Ptr Vec2
p2 ->
Rot -> (Ptr Rot -> IO Polygon) -> IO Polygon
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Rot
a3 ((Ptr Rot -> IO Polygon) -> IO Polygon)
-> (Ptr Rot -> IO Polygon) -> IO Polygon
forall a b. (a -> b) -> a -> b
$ \Ptr Rot
p3 ->
(Ptr Polygon -> IO Polygon) -> IO Polygon
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr Polygon -> IO Polygon) -> IO Polygon)
-> (Ptr Polygon -> IO Polygon) -> IO Polygon
forall a b. (a -> b) -> a -> b
$ \Ptr Polygon
pOut -> Float
-> Float -> Ptr Vec2 -> Ptr Rot -> Float -> Ptr Polygon -> IO ()
c_b2MakeOffsetRoundedBox Float
a0 Float
a1 Ptr Vec2
p2 Ptr Rot
p3 Float
a4 Ptr Polygon
pOut IO () -> IO Polygon -> IO Polygon
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr Polygon -> IO Polygon
forall a. Storable a => Ptr a -> IO a
peek Ptr Polygon
pOut
transformPolygon
:: Transform
-> Polygon
-> IO Polygon
transformPolygon :: Transform -> Polygon -> IO Polygon
transformPolygon Transform
a0 Polygon
a1 =
Transform -> (Ptr Transform -> IO Polygon) -> IO Polygon
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Transform
a0 ((Ptr Transform -> IO Polygon) -> IO Polygon)
-> (Ptr Transform -> IO Polygon) -> IO Polygon
forall a b. (a -> b) -> a -> b
$ \Ptr Transform
p0 ->
Polygon -> (Ptr Polygon -> IO Polygon) -> IO Polygon
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Polygon
a1 ((Ptr Polygon -> IO Polygon) -> IO Polygon)
-> (Ptr Polygon -> IO Polygon) -> IO Polygon
forall a b. (a -> b) -> a -> b
$ \Ptr Polygon
p1 ->
(Ptr Polygon -> IO Polygon) -> IO Polygon
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr Polygon -> IO Polygon) -> IO Polygon)
-> (Ptr Polygon -> IO Polygon) -> IO Polygon
forall a b. (a -> b) -> a -> b
$ \Ptr Polygon
pOut -> Ptr Transform -> Ptr Polygon -> Ptr Polygon -> IO ()
c_b2TransformPolygon Ptr Transform
p0 Ptr Polygon
p1 Ptr Polygon
pOut IO () -> IO Polygon -> IO Polygon
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr Polygon -> IO Polygon
forall a. Storable a => Ptr a -> IO a
peek Ptr Polygon
pOut
computeCircleMass
:: Circle
-> Float
-> IO MassData
computeCircleMass :: Circle -> Float -> IO MassData
computeCircleMass Circle
a0 Float
a1 =
Circle -> (Ptr Circle -> IO MassData) -> IO MassData
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Circle
a0 ((Ptr Circle -> IO MassData) -> IO MassData)
-> (Ptr Circle -> IO MassData) -> IO MassData
forall a b. (a -> b) -> a -> b
$ \Ptr Circle
p0 ->
(Ptr MassData -> IO MassData) -> IO MassData
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr MassData -> IO MassData) -> IO MassData)
-> (Ptr MassData -> IO MassData) -> IO MassData
forall a b. (a -> b) -> a -> b
$ \Ptr MassData
pOut -> Ptr Circle -> Float -> Ptr MassData -> IO ()
c_b2ComputeCircleMass Ptr Circle
p0 Float
a1 Ptr MassData
pOut IO () -> IO MassData -> IO MassData
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr MassData -> IO MassData
forall a. Storable a => Ptr a -> IO a
peek Ptr MassData
pOut
computeCapsuleMass
:: Capsule
-> Float
-> IO MassData
computeCapsuleMass :: Capsule -> Float -> IO MassData
computeCapsuleMass Capsule
a0 Float
a1 =
Capsule -> (Ptr Capsule -> IO MassData) -> IO MassData
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Capsule
a0 ((Ptr Capsule -> IO MassData) -> IO MassData)
-> (Ptr Capsule -> IO MassData) -> IO MassData
forall a b. (a -> b) -> a -> b
$ \Ptr Capsule
p0 ->
(Ptr MassData -> IO MassData) -> IO MassData
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr MassData -> IO MassData) -> IO MassData)
-> (Ptr MassData -> IO MassData) -> IO MassData
forall a b. (a -> b) -> a -> b
$ \Ptr MassData
pOut -> Ptr Capsule -> Float -> Ptr MassData -> IO ()
c_b2ComputeCapsuleMass Ptr Capsule
p0 Float
a1 Ptr MassData
pOut IO () -> IO MassData -> IO MassData
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr MassData -> IO MassData
forall a. Storable a => Ptr a -> IO a
peek Ptr MassData
pOut
computePolygonMass
:: Polygon
-> Float
-> IO MassData
computePolygonMass :: Polygon -> Float -> IO MassData
computePolygonMass Polygon
a0 Float
a1 =
Polygon -> (Ptr Polygon -> IO MassData) -> IO MassData
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Polygon
a0 ((Ptr Polygon -> IO MassData) -> IO MassData)
-> (Ptr Polygon -> IO MassData) -> IO MassData
forall a b. (a -> b) -> a -> b
$ \Ptr Polygon
p0 ->
(Ptr MassData -> IO MassData) -> IO MassData
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr MassData -> IO MassData) -> IO MassData)
-> (Ptr MassData -> IO MassData) -> IO MassData
forall a b. (a -> b) -> a -> b
$ \Ptr MassData
pOut -> Ptr Polygon -> Float -> Ptr MassData -> IO ()
c_b2ComputePolygonMass Ptr Polygon
p0 Float
a1 Ptr MassData
pOut IO () -> IO MassData -> IO MassData
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr MassData -> IO MassData
forall a. Storable a => Ptr a -> IO a
peek Ptr MassData
pOut
computeCircleAABB
:: Circle
-> WorldTransform
-> IO AABB
computeCircleAABB :: Circle -> Transform -> IO AABB
computeCircleAABB Circle
a0 Transform
a1 =
Circle -> (Ptr Circle -> IO AABB) -> IO AABB
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Circle
a0 ((Ptr Circle -> IO AABB) -> IO AABB)
-> (Ptr Circle -> IO AABB) -> IO AABB
forall a b. (a -> b) -> a -> b
$ \Ptr Circle
p0 ->
Transform -> (Ptr Transform -> IO AABB) -> IO AABB
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Transform
a1 ((Ptr Transform -> IO AABB) -> IO AABB)
-> (Ptr Transform -> IO AABB) -> IO AABB
forall a b. (a -> b) -> a -> b
$ \Ptr Transform
p1 ->
(Ptr AABB -> IO AABB) -> IO AABB
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr AABB -> IO AABB) -> IO AABB)
-> (Ptr AABB -> IO AABB) -> IO AABB
forall a b. (a -> b) -> a -> b
$ \Ptr AABB
pOut -> Ptr Circle -> Ptr Transform -> Ptr AABB -> IO ()
c_b2ComputeCircleAABB Ptr Circle
p0 Ptr Transform
p1 Ptr AABB
pOut IO () -> IO AABB -> IO AABB
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr AABB -> IO AABB
forall a. Storable a => Ptr a -> IO a
peek Ptr AABB
pOut
computeCapsuleAABB
:: Capsule
-> WorldTransform
-> IO AABB
computeCapsuleAABB :: Capsule -> Transform -> IO AABB
computeCapsuleAABB Capsule
a0 Transform
a1 =
Capsule -> (Ptr Capsule -> IO AABB) -> IO AABB
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Capsule
a0 ((Ptr Capsule -> IO AABB) -> IO AABB)
-> (Ptr Capsule -> IO AABB) -> IO AABB
forall a b. (a -> b) -> a -> b
$ \Ptr Capsule
p0 ->
Transform -> (Ptr Transform -> IO AABB) -> IO AABB
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Transform
a1 ((Ptr Transform -> IO AABB) -> IO AABB)
-> (Ptr Transform -> IO AABB) -> IO AABB
forall a b. (a -> b) -> a -> b
$ \Ptr Transform
p1 ->
(Ptr AABB -> IO AABB) -> IO AABB
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr AABB -> IO AABB) -> IO AABB)
-> (Ptr AABB -> IO AABB) -> IO AABB
forall a b. (a -> b) -> a -> b
$ \Ptr AABB
pOut -> Ptr Capsule -> Ptr Transform -> Ptr AABB -> IO ()
c_b2ComputeCapsuleAABB Ptr Capsule
p0 Ptr Transform
p1 Ptr AABB
pOut IO () -> IO AABB -> IO AABB
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr AABB -> IO AABB
forall a. Storable a => Ptr a -> IO a
peek Ptr AABB
pOut
computePolygonAABB
:: Polygon
-> WorldTransform
-> IO AABB
computePolygonAABB :: Polygon -> Transform -> IO AABB
computePolygonAABB Polygon
a0 Transform
a1 =
Polygon -> (Ptr Polygon -> IO AABB) -> IO AABB
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Polygon
a0 ((Ptr Polygon -> IO AABB) -> IO AABB)
-> (Ptr Polygon -> IO AABB) -> IO AABB
forall a b. (a -> b) -> a -> b
$ \Ptr Polygon
p0 ->
Transform -> (Ptr Transform -> IO AABB) -> IO AABB
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Transform
a1 ((Ptr Transform -> IO AABB) -> IO AABB)
-> (Ptr Transform -> IO AABB) -> IO AABB
forall a b. (a -> b) -> a -> b
$ \Ptr Transform
p1 ->
(Ptr AABB -> IO AABB) -> IO AABB
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr AABB -> IO AABB) -> IO AABB)
-> (Ptr AABB -> IO AABB) -> IO AABB
forall a b. (a -> b) -> a -> b
$ \Ptr AABB
pOut -> Ptr Polygon -> Ptr Transform -> Ptr AABB -> IO ()
c_b2ComputePolygonAABB Ptr Polygon
p0 Ptr Transform
p1 Ptr AABB
pOut IO () -> IO AABB -> IO AABB
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr AABB -> IO AABB
forall a. Storable a => Ptr a -> IO a
peek Ptr AABB
pOut
computeSegmentAABB
:: Segment
-> WorldTransform
-> IO AABB
computeSegmentAABB :: Segment -> Transform -> IO AABB
computeSegmentAABB Segment
a0 Transform
a1 =
Segment -> (Ptr Segment -> IO AABB) -> IO AABB
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Segment
a0 ((Ptr Segment -> IO AABB) -> IO AABB)
-> (Ptr Segment -> IO AABB) -> IO AABB
forall a b. (a -> b) -> a -> b
$ \Ptr Segment
p0 ->
Transform -> (Ptr Transform -> IO AABB) -> IO AABB
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Transform
a1 ((Ptr Transform -> IO AABB) -> IO AABB)
-> (Ptr Transform -> IO AABB) -> IO AABB
forall a b. (a -> b) -> a -> b
$ \Ptr Transform
p1 ->
(Ptr AABB -> IO AABB) -> IO AABB
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr AABB -> IO AABB) -> IO AABB)
-> (Ptr AABB -> IO AABB) -> IO AABB
forall a b. (a -> b) -> a -> b
$ \Ptr AABB
pOut -> Ptr Segment -> Ptr Transform -> Ptr AABB -> IO ()
c_b2ComputeSegmentAABB Ptr Segment
p0 Ptr Transform
p1 Ptr AABB
pOut IO () -> IO AABB -> IO AABB
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr AABB -> IO AABB
forall a. Storable a => Ptr a -> IO a
peek Ptr AABB
pOut
pointInCircle
:: Circle
-> Vec2
-> IO Bool
pointInCircle :: Circle -> Vec2 -> IO Bool
pointInCircle Circle
a0 Vec2
a1 =
Circle -> (Ptr Circle -> IO Bool) -> IO Bool
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Circle
a0 ((Ptr Circle -> IO Bool) -> IO Bool)
-> (Ptr Circle -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr Circle
p0 ->
Vec2 -> (Ptr Vec2 -> IO Bool) -> IO Bool
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Vec2
a1 ((Ptr Vec2 -> IO Bool) -> IO Bool)
-> (Ptr Vec2 -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr Vec2
p1 ->
CBool -> Bool
forall a. (Eq a, Num a) => a -> Bool
toBool (CBool -> Bool) -> IO CBool -> IO Bool
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Ptr Circle -> Ptr Vec2 -> IO CBool
c_b2PointInCircle Ptr Circle
p0 Ptr Vec2
p1)
pointInCapsule
:: Capsule
-> Vec2
-> IO Bool
pointInCapsule :: Capsule -> Vec2 -> IO Bool
pointInCapsule Capsule
a0 Vec2
a1 =
Capsule -> (Ptr Capsule -> IO Bool) -> IO Bool
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Capsule
a0 ((Ptr Capsule -> IO Bool) -> IO Bool)
-> (Ptr Capsule -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr Capsule
p0 ->
Vec2 -> (Ptr Vec2 -> IO Bool) -> IO Bool
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Vec2
a1 ((Ptr Vec2 -> IO Bool) -> IO Bool)
-> (Ptr Vec2 -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr Vec2
p1 ->
CBool -> Bool
forall a. (Eq a, Num a) => a -> Bool
toBool (CBool -> Bool) -> IO CBool -> IO Bool
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Ptr Capsule -> Ptr Vec2 -> IO CBool
c_b2PointInCapsule Ptr Capsule
p0 Ptr Vec2
p1)
pointInPolygon
:: Polygon
-> Vec2
-> IO Bool
pointInPolygon :: Polygon -> Vec2 -> IO Bool
pointInPolygon Polygon
a0 Vec2
a1 =
Polygon -> (Ptr Polygon -> IO Bool) -> IO Bool
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Polygon
a0 ((Ptr Polygon -> IO Bool) -> IO Bool)
-> (Ptr Polygon -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr Polygon
p0 ->
Vec2 -> (Ptr Vec2 -> IO Bool) -> IO Bool
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Vec2
a1 ((Ptr Vec2 -> IO Bool) -> IO Bool)
-> (Ptr Vec2 -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr Vec2
p1 ->
CBool -> Bool
forall a. (Eq a, Num a) => a -> Bool
toBool (CBool -> Bool) -> IO CBool -> IO Bool
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Ptr Polygon -> Ptr Vec2 -> IO CBool
c_b2PointInPolygon Ptr Polygon
p0 Ptr Vec2
p1)
rayCastCircle
:: Circle
-> RayCastInput
-> IO CastOutput
rayCastCircle :: Circle -> RayCastInput -> IO CastOutput
rayCastCircle Circle
a0 RayCastInput
a1 =
Circle -> (Ptr Circle -> IO CastOutput) -> IO CastOutput
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Circle
a0 ((Ptr Circle -> IO CastOutput) -> IO CastOutput)
-> (Ptr Circle -> IO CastOutput) -> IO CastOutput
forall a b. (a -> b) -> a -> b
$ \Ptr Circle
p0 ->
RayCastInput
-> (Ptr RayCastInput -> IO CastOutput) -> IO CastOutput
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with RayCastInput
a1 ((Ptr RayCastInput -> IO CastOutput) -> IO CastOutput)
-> (Ptr RayCastInput -> IO CastOutput) -> IO CastOutput
forall a b. (a -> b) -> a -> b
$ \Ptr RayCastInput
p1 ->
(Ptr CastOutput -> IO CastOutput) -> IO CastOutput
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr CastOutput -> IO CastOutput) -> IO CastOutput)
-> (Ptr CastOutput -> IO CastOutput) -> IO CastOutput
forall a b. (a -> b) -> a -> b
$ \Ptr CastOutput
pOut -> Ptr Circle -> Ptr RayCastInput -> Ptr CastOutput -> IO ()
c_b2RayCastCircle Ptr Circle
p0 Ptr RayCastInput
p1 Ptr CastOutput
pOut IO () -> IO CastOutput -> IO CastOutput
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr CastOutput -> IO CastOutput
forall a. Storable a => Ptr a -> IO a
peek Ptr CastOutput
pOut
rayCastCapsule
:: Capsule
-> RayCastInput
-> IO CastOutput
rayCastCapsule :: Capsule -> RayCastInput -> IO CastOutput
rayCastCapsule Capsule
a0 RayCastInput
a1 =
Capsule -> (Ptr Capsule -> IO CastOutput) -> IO CastOutput
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Capsule
a0 ((Ptr Capsule -> IO CastOutput) -> IO CastOutput)
-> (Ptr Capsule -> IO CastOutput) -> IO CastOutput
forall a b. (a -> b) -> a -> b
$ \Ptr Capsule
p0 ->
RayCastInput
-> (Ptr RayCastInput -> IO CastOutput) -> IO CastOutput
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with RayCastInput
a1 ((Ptr RayCastInput -> IO CastOutput) -> IO CastOutput)
-> (Ptr RayCastInput -> IO CastOutput) -> IO CastOutput
forall a b. (a -> b) -> a -> b
$ \Ptr RayCastInput
p1 ->
(Ptr CastOutput -> IO CastOutput) -> IO CastOutput
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr CastOutput -> IO CastOutput) -> IO CastOutput)
-> (Ptr CastOutput -> IO CastOutput) -> IO CastOutput
forall a b. (a -> b) -> a -> b
$ \Ptr CastOutput
pOut -> Ptr Capsule -> Ptr RayCastInput -> Ptr CastOutput -> IO ()
c_b2RayCastCapsule Ptr Capsule
p0 Ptr RayCastInput
p1 Ptr CastOutput
pOut IO () -> IO CastOutput -> IO CastOutput
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr CastOutput -> IO CastOutput
forall a. Storable a => Ptr a -> IO a
peek Ptr CastOutput
pOut
rayCastSegment
:: Segment
-> RayCastInput
-> Bool
-> IO CastOutput
rayCastSegment :: Segment -> RayCastInput -> Bool -> IO CastOutput
rayCastSegment Segment
a0 RayCastInput
a1 Bool
a2 =
Segment -> (Ptr Segment -> IO CastOutput) -> IO CastOutput
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Segment
a0 ((Ptr Segment -> IO CastOutput) -> IO CastOutput)
-> (Ptr Segment -> IO CastOutput) -> IO CastOutput
forall a b. (a -> b) -> a -> b
$ \Ptr Segment
p0 ->
RayCastInput
-> (Ptr RayCastInput -> IO CastOutput) -> IO CastOutput
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with RayCastInput
a1 ((Ptr RayCastInput -> IO CastOutput) -> IO CastOutput)
-> (Ptr RayCastInput -> IO CastOutput) -> IO CastOutput
forall a b. (a -> b) -> a -> b
$ \Ptr RayCastInput
p1 ->
(Ptr CastOutput -> IO CastOutput) -> IO CastOutput
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr CastOutput -> IO CastOutput) -> IO CastOutput)
-> (Ptr CastOutput -> IO CastOutput) -> IO CastOutput
forall a b. (a -> b) -> a -> b
$ \Ptr CastOutput
pOut -> Ptr Segment -> Ptr RayCastInput -> CBool -> Ptr CastOutput -> IO ()
c_b2RayCastSegment Ptr Segment
p0 Ptr RayCastInput
p1 (Bool -> CBool
forall a. Num a => Bool -> a
fromBool Bool
a2) Ptr CastOutput
pOut IO () -> IO CastOutput -> IO CastOutput
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr CastOutput -> IO CastOutput
forall a. Storable a => Ptr a -> IO a
peek Ptr CastOutput
pOut
rayCastPolygon
:: Polygon
-> RayCastInput
-> IO CastOutput
rayCastPolygon :: Polygon -> RayCastInput -> IO CastOutput
rayCastPolygon Polygon
a0 RayCastInput
a1 =
Polygon -> (Ptr Polygon -> IO CastOutput) -> IO CastOutput
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Polygon
a0 ((Ptr Polygon -> IO CastOutput) -> IO CastOutput)
-> (Ptr Polygon -> IO CastOutput) -> IO CastOutput
forall a b. (a -> b) -> a -> b
$ \Ptr Polygon
p0 ->
RayCastInput
-> (Ptr RayCastInput -> IO CastOutput) -> IO CastOutput
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with RayCastInput
a1 ((Ptr RayCastInput -> IO CastOutput) -> IO CastOutput)
-> (Ptr RayCastInput -> IO CastOutput) -> IO CastOutput
forall a b. (a -> b) -> a -> b
$ \Ptr RayCastInput
p1 ->
(Ptr CastOutput -> IO CastOutput) -> IO CastOutput
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr CastOutput -> IO CastOutput) -> IO CastOutput)
-> (Ptr CastOutput -> IO CastOutput) -> IO CastOutput
forall a b. (a -> b) -> a -> b
$ \Ptr CastOutput
pOut -> Ptr Polygon -> Ptr RayCastInput -> Ptr CastOutput -> IO ()
c_b2RayCastPolygon Ptr Polygon
p0 Ptr RayCastInput
p1 Ptr CastOutput
pOut IO () -> IO CastOutput -> IO CastOutput
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr CastOutput -> IO CastOutput
forall a. Storable a => Ptr a -> IO a
peek Ptr CastOutput
pOut
shapeCastCircle
:: Circle
-> Ptr ShapeCastInput
-> IO CastOutput
shapeCastCircle :: Circle -> Ptr ShapeCastInput -> IO CastOutput
shapeCastCircle Circle
a0 Ptr ShapeCastInput
a1 =
Circle -> (Ptr Circle -> IO CastOutput) -> IO CastOutput
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Circle
a0 ((Ptr Circle -> IO CastOutput) -> IO CastOutput)
-> (Ptr Circle -> IO CastOutput) -> IO CastOutput
forall a b. (a -> b) -> a -> b
$ \Ptr Circle
p0 ->
(Ptr CastOutput -> IO CastOutput) -> IO CastOutput
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr CastOutput -> IO CastOutput) -> IO CastOutput)
-> (Ptr CastOutput -> IO CastOutput) -> IO CastOutput
forall a b. (a -> b) -> a -> b
$ \Ptr CastOutput
pOut -> Ptr Circle -> Ptr ShapeCastInput -> Ptr CastOutput -> IO ()
c_b2ShapeCastCircle Ptr Circle
p0 Ptr ShapeCastInput
a1 Ptr CastOutput
pOut IO () -> IO CastOutput -> IO CastOutput
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr CastOutput -> IO CastOutput
forall a. Storable a => Ptr a -> IO a
peek Ptr CastOutput
pOut
shapeCastCapsule
:: Capsule
-> Ptr ShapeCastInput
-> IO CastOutput
shapeCastCapsule :: Capsule -> Ptr ShapeCastInput -> IO CastOutput
shapeCastCapsule Capsule
a0 Ptr ShapeCastInput
a1 =
Capsule -> (Ptr Capsule -> IO CastOutput) -> IO CastOutput
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Capsule
a0 ((Ptr Capsule -> IO CastOutput) -> IO CastOutput)
-> (Ptr Capsule -> IO CastOutput) -> IO CastOutput
forall a b. (a -> b) -> a -> b
$ \Ptr Capsule
p0 ->
(Ptr CastOutput -> IO CastOutput) -> IO CastOutput
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr CastOutput -> IO CastOutput) -> IO CastOutput)
-> (Ptr CastOutput -> IO CastOutput) -> IO CastOutput
forall a b. (a -> b) -> a -> b
$ \Ptr CastOutput
pOut -> Ptr Capsule -> Ptr ShapeCastInput -> Ptr CastOutput -> IO ()
c_b2ShapeCastCapsule Ptr Capsule
p0 Ptr ShapeCastInput
a1 Ptr CastOutput
pOut IO () -> IO CastOutput -> IO CastOutput
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr CastOutput -> IO CastOutput
forall a. Storable a => Ptr a -> IO a
peek Ptr CastOutput
pOut
shapeCastSegment
:: Segment
-> Ptr ShapeCastInput
-> IO CastOutput
shapeCastSegment :: Segment -> Ptr ShapeCastInput -> IO CastOutput
shapeCastSegment Segment
a0 Ptr ShapeCastInput
a1 =
Segment -> (Ptr Segment -> IO CastOutput) -> IO CastOutput
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Segment
a0 ((Ptr Segment -> IO CastOutput) -> IO CastOutput)
-> (Ptr Segment -> IO CastOutput) -> IO CastOutput
forall a b. (a -> b) -> a -> b
$ \Ptr Segment
p0 ->
(Ptr CastOutput -> IO CastOutput) -> IO CastOutput
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr CastOutput -> IO CastOutput) -> IO CastOutput)
-> (Ptr CastOutput -> IO CastOutput) -> IO CastOutput
forall a b. (a -> b) -> a -> b
$ \Ptr CastOutput
pOut -> Ptr Segment -> Ptr ShapeCastInput -> Ptr CastOutput -> IO ()
c_b2ShapeCastSegment Ptr Segment
p0 Ptr ShapeCastInput
a1 Ptr CastOutput
pOut IO () -> IO CastOutput -> IO CastOutput
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr CastOutput -> IO CastOutput
forall a. Storable a => Ptr a -> IO a
peek Ptr CastOutput
pOut
shapeCastPolygon
:: Polygon
-> Ptr ShapeCastInput
-> IO CastOutput
shapeCastPolygon :: Polygon -> Ptr ShapeCastInput -> IO CastOutput
shapeCastPolygon Polygon
a0 Ptr ShapeCastInput
a1 =
Polygon -> (Ptr Polygon -> IO CastOutput) -> IO CastOutput
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Polygon
a0 ((Ptr Polygon -> IO CastOutput) -> IO CastOutput)
-> (Ptr Polygon -> IO CastOutput) -> IO CastOutput
forall a b. (a -> b) -> a -> b
$ \Ptr Polygon
p0 ->
(Ptr CastOutput -> IO CastOutput) -> IO CastOutput
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr CastOutput -> IO CastOutput) -> IO CastOutput)
-> (Ptr CastOutput -> IO CastOutput) -> IO CastOutput
forall a b. (a -> b) -> a -> b
$ \Ptr CastOutput
pOut -> Ptr Polygon -> Ptr ShapeCastInput -> Ptr CastOutput -> IO ()
c_b2ShapeCastPolygon Ptr Polygon
p0 Ptr ShapeCastInput
a1 Ptr CastOutput
pOut IO () -> IO CastOutput -> IO CastOutput
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr CastOutput -> IO CastOutput
forall a. Storable a => Ptr a -> IO a
peek Ptr CastOutput
pOut
computeHull
:: Ptr Vec2
-> Int
-> IO Hull
computeHull :: Ptr Vec2 -> Int -> IO Hull
computeHull Ptr Vec2
a0 Int
a1 =
(Ptr Hull -> IO Hull) -> IO Hull
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr Hull -> IO Hull) -> IO Hull)
-> (Ptr Hull -> IO Hull) -> IO Hull
forall a b. (a -> b) -> a -> b
$ \Ptr Hull
pOut -> Ptr Vec2 -> CInt -> Ptr Hull -> IO ()
c_b2ComputeHull Ptr Vec2
a0 (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
a1) Ptr Hull
pOut IO () -> IO Hull -> IO Hull
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr Hull -> IO Hull
forall a. Storable a => Ptr a -> IO a
peek Ptr Hull
pOut
computeHullInto
:: Ptr Vec2
-> Int
-> Ptr Hull
-> IO ()
computeHullInto :: Ptr Vec2 -> Int -> Ptr Hull -> IO ()
computeHullInto Ptr Vec2
a0 Int
a1 Ptr Hull
out =
Ptr Vec2 -> CInt -> Ptr Hull -> IO ()
c_b2ComputeHull Ptr Vec2
a0 (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
a1) Ptr Hull
out
validateHull
:: Hull
-> IO Bool
validateHull :: Hull -> IO Bool
validateHull Hull
a0 =
Hull -> (Ptr Hull -> IO Bool) -> IO Bool
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Hull
a0 ((Ptr Hull -> IO Bool) -> IO Bool)
-> (Ptr Hull -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \Ptr Hull
p0 ->
CBool -> Bool
forall a. (Eq a, Num a) => a -> Bool
toBool (CBool -> Bool) -> IO CBool -> IO Bool
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Ptr Hull -> IO CBool
c_b2ValidateHull Ptr Hull
p0)
segmentDistance
:: Vec2
-> Vec2
-> Vec2
-> Vec2
-> Ptr SegmentDistanceResult
-> IO ()
segmentDistance :: Vec2 -> Vec2 -> Vec2 -> Vec2 -> Ptr SegmentDistanceResult -> IO ()
segmentDistance Vec2
a0 Vec2
a1 Vec2
a2 Vec2
a3 Ptr SegmentDistanceResult
out =
Vec2 -> (Ptr Vec2 -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Vec2
a0 ((Ptr Vec2 -> IO ()) -> IO ()) -> (Ptr Vec2 -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Vec2
p0 ->
Vec2 -> (Ptr Vec2 -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Vec2
a1 ((Ptr Vec2 -> IO ()) -> IO ()) -> (Ptr Vec2 -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Vec2
p1 ->
Vec2 -> (Ptr Vec2 -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Vec2
a2 ((Ptr Vec2 -> IO ()) -> IO ()) -> (Ptr Vec2 -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Vec2
p2 ->
Vec2 -> (Ptr Vec2 -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Vec2
a3 ((Ptr Vec2 -> IO ()) -> IO ()) -> (Ptr Vec2 -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Vec2
p3 ->
Ptr Vec2
-> Ptr Vec2
-> Ptr Vec2
-> Ptr Vec2
-> Ptr SegmentDistanceResult
-> IO ()
c_b2SegmentDistance Ptr Vec2
p0 Ptr Vec2
p1 Ptr Vec2
p2 Ptr Vec2
p3 Ptr SegmentDistanceResult
out
shapeDistance
:: Ptr DistanceInput
-> Ptr SimplexCache
-> Ptr Simplex
-> Int
-> Ptr DistanceOutput
-> IO ()
shapeDistance :: Ptr DistanceInput
-> Ptr SimplexCache
-> Ptr Simplex
-> Int
-> Ptr DistanceOutput
-> IO ()
shapeDistance Ptr DistanceInput
a0 Ptr SimplexCache
a1 Ptr Simplex
a2 Int
a3 Ptr DistanceOutput
out =
Ptr DistanceInput
-> Ptr SimplexCache
-> Ptr Simplex
-> CInt
-> Ptr DistanceOutput
-> IO ()
c_b2ShapeDistance Ptr DistanceInput
a0 Ptr SimplexCache
a1 Ptr Simplex
a2 (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
a3) Ptr DistanceOutput
out
shapeCast
:: Ptr ShapeCastPairInput
-> IO CastOutput
shapeCast :: Ptr ShapeCastPairInput -> IO CastOutput
shapeCast Ptr ShapeCastPairInput
a0 =
(Ptr CastOutput -> IO CastOutput) -> IO CastOutput
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr CastOutput -> IO CastOutput) -> IO CastOutput)
-> (Ptr CastOutput -> IO CastOutput) -> IO CastOutput
forall a b. (a -> b) -> a -> b
$ \Ptr CastOutput
pOut -> Ptr ShapeCastPairInput -> Ptr CastOutput -> IO ()
c_b2ShapeCast Ptr ShapeCastPairInput
a0 Ptr CastOutput
pOut IO () -> IO CastOutput -> IO CastOutput
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr CastOutput -> IO CastOutput
forall a. Storable a => Ptr a -> IO a
peek Ptr CastOutput
pOut
shapeCastInto
:: Ptr ShapeCastPairInput
-> Ptr CastOutput
-> IO ()
shapeCastInto :: Ptr ShapeCastPairInput -> Ptr CastOutput -> IO ()
shapeCastInto Ptr ShapeCastPairInput
a0 Ptr CastOutput
out =
Ptr ShapeCastPairInput -> Ptr CastOutput -> IO ()
c_b2ShapeCast Ptr ShapeCastPairInput
a0 Ptr CastOutput
out
makeProxy
:: Ptr Vec2
-> Int
-> Float
-> Ptr ShapeProxy
-> IO ()
makeProxy :: Ptr Vec2 -> Int -> Float -> Ptr ShapeProxy -> IO ()
makeProxy Ptr Vec2
a0 Int
a1 Float
a2 Ptr ShapeProxy
out =
Ptr Vec2 -> CInt -> Float -> Ptr ShapeProxy -> IO ()
c_b2MakeProxy Ptr Vec2
a0 (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
a1) Float
a2 Ptr ShapeProxy
out
makeOffsetProxy
:: Ptr Vec2
-> Int
-> Float
-> Vec2
-> Rot
-> Ptr ShapeProxy
-> IO ()
makeOffsetProxy :: Ptr Vec2 -> Int -> Float -> Vec2 -> Rot -> Ptr ShapeProxy -> IO ()
makeOffsetProxy Ptr Vec2
a0 Int
a1 Float
a2 Vec2
a3 Rot
a4 Ptr ShapeProxy
out =
Vec2 -> (Ptr Vec2 -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Vec2
a3 ((Ptr Vec2 -> IO ()) -> IO ()) -> (Ptr Vec2 -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Vec2
p3 ->
Rot -> (Ptr Rot -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Rot
a4 ((Ptr Rot -> IO ()) -> IO ()) -> (Ptr Rot -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Rot
p4 ->
Ptr Vec2
-> CInt -> Float -> Ptr Vec2 -> Ptr Rot -> Ptr ShapeProxy -> IO ()
c_b2MakeOffsetProxy Ptr Vec2
a0 (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
a1) Float
a2 Ptr Vec2
p3 Ptr Rot
p4 Ptr ShapeProxy
out
getSweepTransform
:: Sweep
-> Float
-> IO Transform
getSweepTransform :: Sweep -> Float -> IO Transform
getSweepTransform Sweep
a0 Float
a1 =
Sweep -> (Ptr Sweep -> IO Transform) -> IO Transform
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Sweep
a0 ((Ptr Sweep -> IO Transform) -> IO Transform)
-> (Ptr Sweep -> IO Transform) -> IO Transform
forall a b. (a -> b) -> a -> b
$ \Ptr Sweep
p0 ->
(Ptr Transform -> IO Transform) -> IO Transform
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr Transform -> IO Transform) -> IO Transform)
-> (Ptr Transform -> IO Transform) -> IO Transform
forall a b. (a -> b) -> a -> b
$ \Ptr Transform
pOut -> Ptr Sweep -> Float -> Ptr Transform -> IO ()
c_b2GetSweepTransform Ptr Sweep
p0 Float
a1 Ptr Transform
pOut IO () -> IO Transform -> IO Transform
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr Transform -> IO Transform
forall a. Storable a => Ptr a -> IO a
peek Ptr Transform
pOut
timeOfImpact
:: Ptr TOIInput
-> Ptr TOIOutput
-> IO ()
timeOfImpact :: Ptr TOIInput -> Ptr TOIOutput -> IO ()
timeOfImpact Ptr TOIInput
a0 Ptr TOIOutput
out =
Ptr TOIInput -> Ptr TOIOutput -> IO ()
c_b2TimeOfImpact Ptr TOIInput
a0 Ptr TOIOutput
out
collideCircles
:: Circle
-> Circle
-> Transform
-> Ptr LocalManifold
-> IO ()
collideCircles :: Circle -> Circle -> Transform -> Ptr LocalManifold -> IO ()
collideCircles Circle
a0 Circle
a1 Transform
a2 Ptr LocalManifold
out =
Circle -> (Ptr Circle -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Circle
a0 ((Ptr Circle -> IO ()) -> IO ()) -> (Ptr Circle -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Circle
p0 ->
Circle -> (Ptr Circle -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Circle
a1 ((Ptr Circle -> IO ()) -> IO ()) -> (Ptr Circle -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Circle
p1 ->
Transform -> (Ptr Transform -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Transform
a2 ((Ptr Transform -> IO ()) -> IO ())
-> (Ptr Transform -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Transform
p2 ->
Ptr Circle
-> Ptr Circle -> Ptr Transform -> Ptr LocalManifold -> IO ()
c_b2CollideCircles Ptr Circle
p0 Ptr Circle
p1 Ptr Transform
p2 Ptr LocalManifold
out
collideCapsuleAndCircle
:: Capsule
-> Circle
-> Transform
-> Ptr LocalManifold
-> IO ()
collideCapsuleAndCircle :: Capsule -> Circle -> Transform -> Ptr LocalManifold -> IO ()
collideCapsuleAndCircle Capsule
a0 Circle
a1 Transform
a2 Ptr LocalManifold
out =
Capsule -> (Ptr Capsule -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Capsule
a0 ((Ptr Capsule -> IO ()) -> IO ())
-> (Ptr Capsule -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Capsule
p0 ->
Circle -> (Ptr Circle -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Circle
a1 ((Ptr Circle -> IO ()) -> IO ()) -> (Ptr Circle -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Circle
p1 ->
Transform -> (Ptr Transform -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Transform
a2 ((Ptr Transform -> IO ()) -> IO ())
-> (Ptr Transform -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Transform
p2 ->
Ptr Capsule
-> Ptr Circle -> Ptr Transform -> Ptr LocalManifold -> IO ()
c_b2CollideCapsuleAndCircle Ptr Capsule
p0 Ptr Circle
p1 Ptr Transform
p2 Ptr LocalManifold
out
collideSegmentAndCircle
:: Segment
-> Circle
-> Transform
-> Ptr LocalManifold
-> IO ()
collideSegmentAndCircle :: Segment -> Circle -> Transform -> Ptr LocalManifold -> IO ()
collideSegmentAndCircle Segment
a0 Circle
a1 Transform
a2 Ptr LocalManifold
out =
Segment -> (Ptr Segment -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Segment
a0 ((Ptr Segment -> IO ()) -> IO ())
-> (Ptr Segment -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Segment
p0 ->
Circle -> (Ptr Circle -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Circle
a1 ((Ptr Circle -> IO ()) -> IO ()) -> (Ptr Circle -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Circle
p1 ->
Transform -> (Ptr Transform -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Transform
a2 ((Ptr Transform -> IO ()) -> IO ())
-> (Ptr Transform -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Transform
p2 ->
Ptr Segment
-> Ptr Circle -> Ptr Transform -> Ptr LocalManifold -> IO ()
c_b2CollideSegmentAndCircle Ptr Segment
p0 Ptr Circle
p1 Ptr Transform
p2 Ptr LocalManifold
out
collidePolygonAndCircle
:: Polygon
-> Circle
-> Transform
-> Ptr LocalManifold
-> IO ()
collidePolygonAndCircle :: Polygon -> Circle -> Transform -> Ptr LocalManifold -> IO ()
collidePolygonAndCircle Polygon
a0 Circle
a1 Transform
a2 Ptr LocalManifold
out =
Polygon -> (Ptr Polygon -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Polygon
a0 ((Ptr Polygon -> IO ()) -> IO ())
-> (Ptr Polygon -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Polygon
p0 ->
Circle -> (Ptr Circle -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Circle
a1 ((Ptr Circle -> IO ()) -> IO ()) -> (Ptr Circle -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Circle
p1 ->
Transform -> (Ptr Transform -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Transform
a2 ((Ptr Transform -> IO ()) -> IO ())
-> (Ptr Transform -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Transform
p2 ->
Ptr Polygon
-> Ptr Circle -> Ptr Transform -> Ptr LocalManifold -> IO ()
c_b2CollidePolygonAndCircle Ptr Polygon
p0 Ptr Circle
p1 Ptr Transform
p2 Ptr LocalManifold
out
collideCapsules
:: Capsule
-> Capsule
-> Transform
-> Ptr LocalManifold
-> IO ()
collideCapsules :: Capsule -> Capsule -> Transform -> Ptr LocalManifold -> IO ()
collideCapsules Capsule
a0 Capsule
a1 Transform
a2 Ptr LocalManifold
out =
Capsule -> (Ptr Capsule -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Capsule
a0 ((Ptr Capsule -> IO ()) -> IO ())
-> (Ptr Capsule -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Capsule
p0 ->
Capsule -> (Ptr Capsule -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Capsule
a1 ((Ptr Capsule -> IO ()) -> IO ())
-> (Ptr Capsule -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Capsule
p1 ->
Transform -> (Ptr Transform -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Transform
a2 ((Ptr Transform -> IO ()) -> IO ())
-> (Ptr Transform -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Transform
p2 ->
Ptr Capsule
-> Ptr Capsule -> Ptr Transform -> Ptr LocalManifold -> IO ()
c_b2CollideCapsules Ptr Capsule
p0 Ptr Capsule
p1 Ptr Transform
p2 Ptr LocalManifold
out
collideSegmentAndCapsule
:: Segment
-> Capsule
-> Transform
-> Ptr LocalManifold
-> IO ()
collideSegmentAndCapsule :: Segment -> Capsule -> Transform -> Ptr LocalManifold -> IO ()
collideSegmentAndCapsule Segment
a0 Capsule
a1 Transform
a2 Ptr LocalManifold
out =
Segment -> (Ptr Segment -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Segment
a0 ((Ptr Segment -> IO ()) -> IO ())
-> (Ptr Segment -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Segment
p0 ->
Capsule -> (Ptr Capsule -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Capsule
a1 ((Ptr Capsule -> IO ()) -> IO ())
-> (Ptr Capsule -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Capsule
p1 ->
Transform -> (Ptr Transform -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Transform
a2 ((Ptr Transform -> IO ()) -> IO ())
-> (Ptr Transform -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Transform
p2 ->
Ptr Segment
-> Ptr Capsule -> Ptr Transform -> Ptr LocalManifold -> IO ()
c_b2CollideSegmentAndCapsule Ptr Segment
p0 Ptr Capsule
p1 Ptr Transform
p2 Ptr LocalManifold
out
collidePolygonAndCapsule
:: Polygon
-> Capsule
-> Transform
-> Ptr LocalManifold
-> IO ()
collidePolygonAndCapsule :: Polygon -> Capsule -> Transform -> Ptr LocalManifold -> IO ()
collidePolygonAndCapsule Polygon
a0 Capsule
a1 Transform
a2 Ptr LocalManifold
out =
Polygon -> (Ptr Polygon -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Polygon
a0 ((Ptr Polygon -> IO ()) -> IO ())
-> (Ptr Polygon -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Polygon
p0 ->
Capsule -> (Ptr Capsule -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Capsule
a1 ((Ptr Capsule -> IO ()) -> IO ())
-> (Ptr Capsule -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Capsule
p1 ->
Transform -> (Ptr Transform -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Transform
a2 ((Ptr Transform -> IO ()) -> IO ())
-> (Ptr Transform -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Transform
p2 ->
Ptr Polygon
-> Ptr Capsule -> Ptr Transform -> Ptr LocalManifold -> IO ()
c_b2CollidePolygonAndCapsule Ptr Polygon
p0 Ptr Capsule
p1 Ptr Transform
p2 Ptr LocalManifold
out
collidePolygons
:: Polygon
-> Polygon
-> Transform
-> Ptr LocalManifold
-> IO ()
collidePolygons :: Polygon -> Polygon -> Transform -> Ptr LocalManifold -> IO ()
collidePolygons Polygon
a0 Polygon
a1 Transform
a2 Ptr LocalManifold
out =
Polygon -> (Ptr Polygon -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Polygon
a0 ((Ptr Polygon -> IO ()) -> IO ())
-> (Ptr Polygon -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Polygon
p0 ->
Polygon -> (Ptr Polygon -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Polygon
a1 ((Ptr Polygon -> IO ()) -> IO ())
-> (Ptr Polygon -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Polygon
p1 ->
Transform -> (Ptr Transform -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Transform
a2 ((Ptr Transform -> IO ()) -> IO ())
-> (Ptr Transform -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Transform
p2 ->
Ptr Polygon
-> Ptr Polygon -> Ptr Transform -> Ptr LocalManifold -> IO ()
c_b2CollidePolygons Ptr Polygon
p0 Ptr Polygon
p1 Ptr Transform
p2 Ptr LocalManifold
out
collideSegmentAndPolygon
:: Segment
-> Polygon
-> Transform
-> Ptr LocalManifold
-> IO ()
collideSegmentAndPolygon :: Segment -> Polygon -> Transform -> Ptr LocalManifold -> IO ()
collideSegmentAndPolygon Segment
a0 Polygon
a1 Transform
a2 Ptr LocalManifold
out =
Segment -> (Ptr Segment -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Segment
a0 ((Ptr Segment -> IO ()) -> IO ())
-> (Ptr Segment -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Segment
p0 ->
Polygon -> (Ptr Polygon -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Polygon
a1 ((Ptr Polygon -> IO ()) -> IO ())
-> (Ptr Polygon -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Polygon
p1 ->
Transform -> (Ptr Transform -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Transform
a2 ((Ptr Transform -> IO ()) -> IO ())
-> (Ptr Transform -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Transform
p2 ->
Ptr Segment
-> Ptr Polygon -> Ptr Transform -> Ptr LocalManifold -> IO ()
c_b2CollideSegmentAndPolygon Ptr Segment
p0 Ptr Polygon
p1 Ptr Transform
p2 Ptr LocalManifold
out
collideChainSegmentAndCircle
:: Ptr ChainSegment
-> Circle
-> Transform
-> Ptr LocalManifold
-> IO ()
collideChainSegmentAndCircle :: Ptr ChainSegment
-> Circle -> Transform -> Ptr LocalManifold -> IO ()
collideChainSegmentAndCircle Ptr ChainSegment
a0 Circle
a1 Transform
a2 Ptr LocalManifold
out =
Circle -> (Ptr Circle -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Circle
a1 ((Ptr Circle -> IO ()) -> IO ()) -> (Ptr Circle -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Circle
p1 ->
Transform -> (Ptr Transform -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Transform
a2 ((Ptr Transform -> IO ()) -> IO ())
-> (Ptr Transform -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Transform
p2 ->
Ptr ChainSegment
-> Ptr Circle -> Ptr Transform -> Ptr LocalManifold -> IO ()
c_b2CollideChainSegmentAndCircle Ptr ChainSegment
a0 Ptr Circle
p1 Ptr Transform
p2 Ptr LocalManifold
out
collideChainSegmentAndCapsule
:: Ptr ChainSegment
-> Capsule
-> Transform
-> Ptr SimplexCache
-> Ptr LocalManifold
-> IO ()
collideChainSegmentAndCapsule :: Ptr ChainSegment
-> Capsule
-> Transform
-> Ptr SimplexCache
-> Ptr LocalManifold
-> IO ()
collideChainSegmentAndCapsule Ptr ChainSegment
a0 Capsule
a1 Transform
a2 Ptr SimplexCache
a3 Ptr LocalManifold
out =
Capsule -> (Ptr Capsule -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Capsule
a1 ((Ptr Capsule -> IO ()) -> IO ())
-> (Ptr Capsule -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Capsule
p1 ->
Transform -> (Ptr Transform -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Transform
a2 ((Ptr Transform -> IO ()) -> IO ())
-> (Ptr Transform -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Transform
p2 ->
Ptr ChainSegment
-> Ptr Capsule
-> Ptr Transform
-> Ptr SimplexCache
-> Ptr LocalManifold
-> IO ()
c_b2CollideChainSegmentAndCapsule Ptr ChainSegment
a0 Ptr Capsule
p1 Ptr Transform
p2 Ptr SimplexCache
a3 Ptr LocalManifold
out
collideChainSegmentAndPolygon
:: Ptr ChainSegment
-> Polygon
-> Transform
-> Ptr SimplexCache
-> Ptr LocalManifold
-> IO ()
collideChainSegmentAndPolygon :: Ptr ChainSegment
-> Polygon
-> Transform
-> Ptr SimplexCache
-> Ptr LocalManifold
-> IO ()
collideChainSegmentAndPolygon Ptr ChainSegment
a0 Polygon
a1 Transform
a2 Ptr SimplexCache
a3 Ptr LocalManifold
out =
Polygon -> (Ptr Polygon -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Polygon
a1 ((Ptr Polygon -> IO ()) -> IO ())
-> (Ptr Polygon -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Polygon
p1 ->
Transform -> (Ptr Transform -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Transform
a2 ((Ptr Transform -> IO ()) -> IO ())
-> (Ptr Transform -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Transform
p2 ->
Ptr ChainSegment
-> Ptr Polygon
-> Ptr Transform
-> Ptr SimplexCache
-> Ptr LocalManifold
-> IO ()
c_b2CollideChainSegmentAndPolygon Ptr ChainSegment
a0 Ptr Polygon
p1 Ptr Transform
p2 Ptr SimplexCache
a3 Ptr LocalManifold
out
solvePlanes
:: Vec2
-> Ptr CollisionPlane
-> Int
-> Ptr PlaneSolverResult
-> IO ()
solvePlanes :: Vec2 -> Ptr CollisionPlane -> Int -> Ptr PlaneSolverResult -> IO ()
solvePlanes Vec2
a0 Ptr CollisionPlane
a1 Int
a2 Ptr PlaneSolverResult
out =
Vec2 -> (Ptr Vec2 -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Vec2
a0 ((Ptr Vec2 -> IO ()) -> IO ()) -> (Ptr Vec2 -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Vec2
p0 ->
Ptr Vec2
-> Ptr CollisionPlane -> CInt -> Ptr PlaneSolverResult -> IO ()
c_b2SolvePlanes Ptr Vec2
p0 Ptr CollisionPlane
a1 (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
a2) Ptr PlaneSolverResult
out
clipVector
:: Vec2
-> Ptr CollisionPlane
-> Int
-> IO Vec2
clipVector :: Vec2 -> Ptr CollisionPlane -> Int -> IO Vec2
clipVector Vec2
a0 Ptr CollisionPlane
a1 Int
a2 =
Vec2 -> (Ptr Vec2 -> IO Vec2) -> IO Vec2
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Vec2
a0 ((Ptr Vec2 -> IO Vec2) -> IO Vec2)
-> (Ptr Vec2 -> IO Vec2) -> IO Vec2
forall a b. (a -> b) -> a -> b
$ \Ptr Vec2
p0 ->
(Ptr Vec2 -> IO Vec2) -> IO Vec2
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr Vec2 -> IO Vec2) -> IO Vec2)
-> (Ptr Vec2 -> IO Vec2) -> IO Vec2
forall a b. (a -> b) -> a -> b
$ \Ptr Vec2
pOut -> Ptr Vec2 -> Ptr CollisionPlane -> CInt -> Ptr Vec2 -> IO ()
c_b2ClipVector Ptr Vec2
p0 Ptr CollisionPlane
a1 (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
a2) Ptr Vec2
pOut IO () -> IO Vec2 -> IO Vec2
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr Vec2 -> IO Vec2
forall a. Storable a => Ptr a -> IO a
peek Ptr Vec2
pOut