module Box2D.Body
( create
, destroy
, isValid
, getType
, setType
, setName
, getName
, setUserData
, getUserData
, getPosition
, getPositionInto
, getRotation
, getRotationInto
, getTransform
, getTransformInto
, setTransform
, getLocalPoint
, getWorldPoint
, getLocalVector
, getWorldVector
, getLinearVelocity
, getLinearVelocityInto
, getAngularVelocity
, setLinearVelocity
, setAngularVelocity
, setTargetTransform
, getLocalPointVelocity
, getWorldPointVelocity
, applyForce
, applyForceToCenter
, applyTorque
, clearForces
, applyLinearImpulse
, applyLinearImpulseToCenter
, applyAngularImpulse
, getMass
, getRotationalInertia
, getLocalCenter
, getLocalCenterInto
, getWorldCenter
, getWorldCenterInto
, setMassData
, getMassData
, getMassDataInto
, applyMassFromShapes
, setLinearDamping
, getLinearDamping
, setAngularDamping
, getAngularDamping
, setGravityScale
, getGravityScale
, isAwake
, setAwake
, wakeTouching
, enableSleep
, isSleepEnabled
, setSleepThreshold
, getSleepThreshold
, isEnabled
, disable
, enable
, setMotionLocks
, getMotionLocks
, getMotionLocksInto
, setBullet
, isBullet
, enableContactRecycling
, isContactRecyclingEnabled
, enableContactEvents
, enableHitEvents
, getWorld
, getShapeCount
, getShapes
, getJointCount
, getJoints
, getContactCapacity
, getContactData
, computeAABB
, computeAABBInto
)
where
import Foreign
import Foreign.C.Types (CBool(..), CInt(..))
import Foreign.C.String (CString)
import Data.Coerce (coerce)
import Box2D.Id (BodyId(..), JointId(..), ShapeId(..), WorldId(..))
import Box2D.MathTypes (AABB, Pos, Rot, Vec2, WorldTransform)
import Box2D.Tags (ContactData)
import Box2D.Types (BodyDef, BodyType(..), MassData, MotionLocks)
foreign import ccall unsafe "b2CreateBody"
c_b2CreateBody :: WorldId -> Ptr BodyDef -> IO BodyId
foreign import ccall unsafe "b2DestroyBody"
c_b2DestroyBody :: BodyId -> IO ()
foreign import ccall unsafe "b2Body_IsValid"
c_b2Body_IsValid :: BodyId -> IO CBool
foreign import ccall unsafe "b2Body_GetType"
c_b2Body_GetType :: BodyId -> IO CInt
foreign import ccall unsafe "b2Body_SetType"
c_b2Body_SetType :: BodyId -> CInt -> IO ()
foreign import ccall unsafe "b2Body_SetName"
c_b2Body_SetName :: BodyId -> CString -> IO ()
foreign import ccall unsafe "b2Body_GetName"
c_b2Body_GetName :: BodyId -> IO CString
foreign import ccall unsafe "b2Body_SetUserData"
c_b2Body_SetUserData :: BodyId -> Ptr () -> IO ()
foreign import ccall unsafe "b2Body_GetUserData"
c_b2Body_GetUserData :: BodyId -> IO (Ptr ())
foreign import ccall unsafe "hsg_b2Body_GetPosition"
c_b2Body_GetPosition :: BodyId -> Ptr Pos -> IO ()
foreign import ccall unsafe "hsg_b2Body_GetRotation"
c_b2Body_GetRotation :: BodyId -> Ptr Rot -> IO ()
foreign import ccall unsafe "hsg_b2Body_GetTransform"
c_b2Body_GetTransform :: BodyId -> Ptr WorldTransform -> IO ()
foreign import ccall unsafe "hsg_b2Body_SetTransform"
c_b2Body_SetTransform :: BodyId -> Ptr Pos -> Ptr Rot -> IO ()
foreign import ccall unsafe "hsg_b2Body_GetLocalPoint"
c_b2Body_GetLocalPoint :: BodyId -> Ptr Pos -> Ptr Vec2 -> IO ()
foreign import ccall unsafe "hsg_b2Body_GetWorldPoint"
c_b2Body_GetWorldPoint :: BodyId -> Ptr Vec2 -> Ptr Pos -> IO ()
foreign import ccall unsafe "hsg_b2Body_GetLocalVector"
c_b2Body_GetLocalVector :: BodyId -> Ptr Vec2 -> Ptr Vec2 -> IO ()
foreign import ccall unsafe "hsg_b2Body_GetWorldVector"
c_b2Body_GetWorldVector :: BodyId -> Ptr Vec2 -> Ptr Vec2 -> IO ()
foreign import ccall unsafe "hsg_b2Body_GetLinearVelocity"
c_b2Body_GetLinearVelocity :: BodyId -> Ptr Vec2 -> IO ()
foreign import ccall unsafe "b2Body_GetAngularVelocity"
c_b2Body_GetAngularVelocity :: BodyId -> IO Float
foreign import ccall unsafe "hsg_b2Body_SetLinearVelocity"
c_b2Body_SetLinearVelocity :: BodyId -> Ptr Vec2 -> IO ()
foreign import ccall unsafe "b2Body_SetAngularVelocity"
c_b2Body_SetAngularVelocity :: BodyId -> Float -> IO ()
foreign import ccall unsafe "hsg_b2Body_SetTargetTransform"
c_b2Body_SetTargetTransform :: BodyId -> Ptr WorldTransform -> Float -> CBool -> IO ()
foreign import ccall unsafe "hsg_b2Body_GetLocalPointVelocity"
c_b2Body_GetLocalPointVelocity :: BodyId -> Ptr Vec2 -> Ptr Vec2 -> IO ()
foreign import ccall unsafe "hsg_b2Body_GetWorldPointVelocity"
c_b2Body_GetWorldPointVelocity :: BodyId -> Ptr Pos -> Ptr Vec2 -> IO ()
foreign import ccall unsafe "hsg_b2Body_ApplyForce"
c_b2Body_ApplyForce :: BodyId -> Ptr Vec2 -> Ptr Pos -> CBool -> IO ()
foreign import ccall unsafe "hsg_b2Body_ApplyForceToCenter"
c_b2Body_ApplyForceToCenter :: BodyId -> Ptr Vec2 -> CBool -> IO ()
foreign import ccall unsafe "b2Body_ApplyTorque"
c_b2Body_ApplyTorque :: BodyId -> Float -> CBool -> IO ()
foreign import ccall unsafe "b2Body_ClearForces"
c_b2Body_ClearForces :: BodyId -> IO ()
foreign import ccall unsafe "hsg_b2Body_ApplyLinearImpulse"
c_b2Body_ApplyLinearImpulse :: BodyId -> Ptr Vec2 -> Ptr Pos -> CBool -> IO ()
foreign import ccall unsafe "hsg_b2Body_ApplyLinearImpulseToCenter"
c_b2Body_ApplyLinearImpulseToCenter :: BodyId -> Ptr Vec2 -> CBool -> IO ()
foreign import ccall unsafe "b2Body_ApplyAngularImpulse"
c_b2Body_ApplyAngularImpulse :: BodyId -> Float -> CBool -> IO ()
foreign import ccall unsafe "b2Body_GetMass"
c_b2Body_GetMass :: BodyId -> IO Float
foreign import ccall unsafe "b2Body_GetRotationalInertia"
c_b2Body_GetRotationalInertia :: BodyId -> IO Float
foreign import ccall unsafe "hsg_b2Body_GetLocalCenter"
c_b2Body_GetLocalCenter :: BodyId -> Ptr Vec2 -> IO ()
foreign import ccall unsafe "hsg_b2Body_GetWorldCenter"
c_b2Body_GetWorldCenter :: BodyId -> Ptr Pos -> IO ()
foreign import ccall unsafe "hsg_b2Body_SetMassData"
c_b2Body_SetMassData :: BodyId -> Ptr MassData -> IO ()
foreign import ccall unsafe "hsg_b2Body_GetMassData"
c_b2Body_GetMassData :: BodyId -> Ptr MassData -> IO ()
foreign import ccall unsafe "b2Body_ApplyMassFromShapes"
c_b2Body_ApplyMassFromShapes :: BodyId -> IO ()
foreign import ccall unsafe "b2Body_SetLinearDamping"
c_b2Body_SetLinearDamping :: BodyId -> Float -> IO ()
foreign import ccall unsafe "b2Body_GetLinearDamping"
c_b2Body_GetLinearDamping :: BodyId -> IO Float
foreign import ccall unsafe "b2Body_SetAngularDamping"
c_b2Body_SetAngularDamping :: BodyId -> Float -> IO ()
foreign import ccall unsafe "b2Body_GetAngularDamping"
c_b2Body_GetAngularDamping :: BodyId -> IO Float
foreign import ccall unsafe "b2Body_SetGravityScale"
c_b2Body_SetGravityScale :: BodyId -> Float -> IO ()
foreign import ccall unsafe "b2Body_GetGravityScale"
c_b2Body_GetGravityScale :: BodyId -> IO Float
foreign import ccall unsafe "b2Body_IsAwake"
c_b2Body_IsAwake :: BodyId -> IO CBool
foreign import ccall unsafe "b2Body_SetAwake"
c_b2Body_SetAwake :: BodyId -> CBool -> IO ()
foreign import ccall unsafe "b2Body_WakeTouching"
c_b2Body_WakeTouching :: BodyId -> IO ()
foreign import ccall unsafe "b2Body_EnableSleep"
c_b2Body_EnableSleep :: BodyId -> CBool -> IO ()
foreign import ccall unsafe "b2Body_IsSleepEnabled"
c_b2Body_IsSleepEnabled :: BodyId -> IO CBool
foreign import ccall unsafe "b2Body_SetSleepThreshold"
c_b2Body_SetSleepThreshold :: BodyId -> Float -> IO ()
foreign import ccall unsafe "b2Body_GetSleepThreshold"
c_b2Body_GetSleepThreshold :: BodyId -> IO Float
foreign import ccall unsafe "b2Body_IsEnabled"
c_b2Body_IsEnabled :: BodyId -> IO CBool
foreign import ccall unsafe "b2Body_Disable"
c_b2Body_Disable :: BodyId -> IO ()
foreign import ccall unsafe "b2Body_Enable"
c_b2Body_Enable :: BodyId -> IO ()
foreign import ccall unsafe "hsg_b2Body_SetMotionLocks"
c_b2Body_SetMotionLocks :: BodyId -> Ptr MotionLocks -> IO ()
foreign import ccall unsafe "hsg_b2Body_GetMotionLocks"
c_b2Body_GetMotionLocks :: BodyId -> Ptr MotionLocks -> IO ()
foreign import ccall unsafe "b2Body_SetBullet"
c_b2Body_SetBullet :: BodyId -> CBool -> IO ()
foreign import ccall unsafe "b2Body_IsBullet"
c_b2Body_IsBullet :: BodyId -> IO CBool
foreign import ccall unsafe "b2Body_EnableContactRecycling"
c_b2Body_EnableContactRecycling :: BodyId -> CBool -> IO ()
foreign import ccall unsafe "b2Body_IsContactRecyclingEnabled"
c_b2Body_IsContactRecyclingEnabled :: BodyId -> IO CBool
foreign import ccall unsafe "b2Body_EnableContactEvents"
c_b2Body_EnableContactEvents :: BodyId -> CBool -> IO ()
foreign import ccall unsafe "b2Body_EnableHitEvents"
c_b2Body_EnableHitEvents :: BodyId -> CBool -> IO ()
foreign import ccall unsafe "b2Body_GetWorld"
c_b2Body_GetWorld :: BodyId -> IO WorldId
foreign import ccall unsafe "b2Body_GetShapeCount"
c_b2Body_GetShapeCount :: BodyId -> IO CInt
foreign import ccall unsafe "b2Body_GetShapes"
c_b2Body_GetShapes :: BodyId -> Ptr ShapeId -> CInt -> IO CInt
foreign import ccall unsafe "b2Body_GetJointCount"
c_b2Body_GetJointCount :: BodyId -> IO CInt
foreign import ccall unsafe "b2Body_GetJoints"
c_b2Body_GetJoints :: BodyId -> Ptr JointId -> CInt -> IO CInt
foreign import ccall unsafe "b2Body_GetContactCapacity"
c_b2Body_GetContactCapacity :: BodyId -> IO CInt
foreign import ccall unsafe "b2Body_GetContactData"
c_b2Body_GetContactData :: BodyId -> Ptr ContactData -> CInt -> IO CInt
foreign import ccall unsafe "hsg_b2Body_ComputeAABB"
c_b2Body_ComputeAABB :: BodyId -> Ptr AABB -> IO ()
create
:: WorldId
-> BodyDef
-> IO BodyId
create :: WorldId -> BodyDef -> IO BodyId
create WorldId
a0 BodyDef
a1 =
BodyDef -> (Ptr BodyDef -> IO BodyId) -> IO BodyId
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with BodyDef
a1 ((Ptr BodyDef -> IO BodyId) -> IO BodyId)
-> (Ptr BodyDef -> IO BodyId) -> IO BodyId
forall a b. (a -> b) -> a -> b
$ \Ptr BodyDef
p1 ->
WorldId -> Ptr BodyDef -> IO BodyId
c_b2CreateBody WorldId
a0 Ptr BodyDef
p1
destroy
:: BodyId
-> IO ()
destroy :: BodyId -> IO ()
destroy BodyId
a0 =
BodyId -> IO ()
c_b2DestroyBody BodyId
a0
isValid
:: BodyId
-> IO Bool
isValid :: BodyId -> IO Bool
isValid BodyId
a0 =
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
<$> (BodyId -> IO CBool
c_b2Body_IsValid BodyId
a0)
getType
:: BodyId
-> IO BodyType
getType :: BodyId -> IO BodyType
getType BodyId
a0 =
CInt -> BodyType
forall a b. Coercible a b => a -> b
coerce (CInt -> BodyType) -> IO CInt -> IO BodyType
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (BodyId -> IO CInt
c_b2Body_GetType BodyId
a0)
setType
:: BodyId
-> BodyType
-> IO ()
setType :: BodyId -> BodyType -> IO ()
setType BodyId
a0 BodyType
a1 =
BodyId -> CInt -> IO ()
c_b2Body_SetType BodyId
a0 (BodyType -> CInt
forall a b. Coercible a b => a -> b
coerce BodyType
a1)
setName
:: BodyId
-> CString
-> IO ()
setName :: BodyId -> CString -> IO ()
setName BodyId
a0 CString
a1 =
BodyId -> CString -> IO ()
c_b2Body_SetName BodyId
a0 CString
a1
getName
:: BodyId
-> IO CString
getName :: BodyId -> IO CString
getName BodyId
a0 =
BodyId -> IO CString
c_b2Body_GetName BodyId
a0
setUserData
:: BodyId
-> Ptr ()
-> IO ()
setUserData :: BodyId -> Ptr () -> IO ()
setUserData BodyId
a0 Ptr ()
a1 =
BodyId -> Ptr () -> IO ()
c_b2Body_SetUserData BodyId
a0 Ptr ()
a1
getUserData
:: BodyId
-> IO (Ptr ())
getUserData :: BodyId -> IO (Ptr ())
getUserData BodyId
a0 =
BodyId -> IO (Ptr ())
c_b2Body_GetUserData BodyId
a0
getPosition
:: BodyId
-> IO Pos
getPosition :: BodyId -> IO Pos
getPosition BodyId
a0 =
(Ptr Pos -> IO Pos) -> IO Pos
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr Pos -> IO Pos) -> IO Pos) -> (Ptr Pos -> IO Pos) -> IO Pos
forall a b. (a -> b) -> a -> b
$ \Ptr Pos
pOut -> BodyId -> Ptr Pos -> IO ()
c_b2Body_GetPosition BodyId
a0 Ptr Pos
pOut IO () -> IO Pos -> IO Pos
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr Pos -> IO Pos
forall a. Storable a => Ptr a -> IO a
peek Ptr Pos
pOut
getPositionInto
:: BodyId
-> Ptr Pos
-> IO ()
getPositionInto :: BodyId -> Ptr Pos -> IO ()
getPositionInto BodyId
a0 Ptr Pos
out =
BodyId -> Ptr Pos -> IO ()
c_b2Body_GetPosition BodyId
a0 Ptr Pos
out
getRotation
:: BodyId
-> IO Rot
getRotation :: BodyId -> IO Rot
getRotation BodyId
a0 =
(Ptr Rot -> IO Rot) -> IO Rot
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr Rot -> IO Rot) -> IO Rot) -> (Ptr Rot -> IO Rot) -> IO Rot
forall a b. (a -> b) -> a -> b
$ \Ptr Rot
pOut -> BodyId -> Ptr Rot -> IO ()
c_b2Body_GetRotation BodyId
a0 Ptr Rot
pOut IO () -> IO Rot -> IO Rot
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr Rot -> IO Rot
forall a. Storable a => Ptr a -> IO a
peek Ptr Rot
pOut
getRotationInto
:: BodyId
-> Ptr Rot
-> IO ()
getRotationInto :: BodyId -> Ptr Rot -> IO ()
getRotationInto BodyId
a0 Ptr Rot
out =
BodyId -> Ptr Rot -> IO ()
c_b2Body_GetRotation BodyId
a0 Ptr Rot
out
getTransform
:: BodyId
-> IO WorldTransform
getTransform :: BodyId -> IO WorldTransform
getTransform BodyId
a0 =
(Ptr WorldTransform -> IO WorldTransform) -> IO WorldTransform
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr WorldTransform -> IO WorldTransform) -> IO WorldTransform)
-> (Ptr WorldTransform -> IO WorldTransform) -> IO WorldTransform
forall a b. (a -> b) -> a -> b
$ \Ptr WorldTransform
pOut -> BodyId -> Ptr WorldTransform -> IO ()
c_b2Body_GetTransform BodyId
a0 Ptr WorldTransform
pOut IO () -> IO WorldTransform -> IO WorldTransform
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr WorldTransform -> IO WorldTransform
forall a. Storable a => Ptr a -> IO a
peek Ptr WorldTransform
pOut
getTransformInto
:: BodyId
-> Ptr WorldTransform
-> IO ()
getTransformInto :: BodyId -> Ptr WorldTransform -> IO ()
getTransformInto BodyId
a0 Ptr WorldTransform
out =
BodyId -> Ptr WorldTransform -> IO ()
c_b2Body_GetTransform BodyId
a0 Ptr WorldTransform
out
setTransform
:: BodyId
-> Pos
-> Rot
-> IO ()
setTransform :: BodyId -> Pos -> Rot -> IO ()
setTransform BodyId
a0 Pos
a1 Rot
a2 =
Pos -> (Ptr Pos -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Pos
a1 ((Ptr Pos -> IO ()) -> IO ()) -> (Ptr Pos -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Pos
p1 ->
Rot -> (Ptr Rot -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Rot
a2 ((Ptr Rot -> IO ()) -> IO ()) -> (Ptr Rot -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Rot
p2 ->
BodyId -> Ptr Pos -> Ptr Rot -> IO ()
c_b2Body_SetTransform BodyId
a0 Ptr Pos
p1 Ptr Rot
p2
getLocalPoint
:: BodyId
-> Pos
-> IO Vec2
getLocalPoint :: BodyId -> Pos -> IO Pos
getLocalPoint BodyId
a0 Pos
a1 =
Pos -> (Ptr Pos -> IO Pos) -> IO Pos
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Pos
a1 ((Ptr Pos -> IO Pos) -> IO Pos) -> (Ptr Pos -> IO Pos) -> IO Pos
forall a b. (a -> b) -> a -> b
$ \Ptr Pos
p1 ->
(Ptr Pos -> IO Pos) -> IO Pos
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr Pos -> IO Pos) -> IO Pos) -> (Ptr Pos -> IO Pos) -> IO Pos
forall a b. (a -> b) -> a -> b
$ \Ptr Pos
pOut -> BodyId -> Ptr Pos -> Ptr Pos -> IO ()
c_b2Body_GetLocalPoint BodyId
a0 Ptr Pos
p1 Ptr Pos
pOut IO () -> IO Pos -> IO Pos
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr Pos -> IO Pos
forall a. Storable a => Ptr a -> IO a
peek Ptr Pos
pOut
getWorldPoint
:: BodyId
-> Vec2
-> IO Pos
getWorldPoint :: BodyId -> Pos -> IO Pos
getWorldPoint BodyId
a0 Pos
a1 =
Pos -> (Ptr Pos -> IO Pos) -> IO Pos
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Pos
a1 ((Ptr Pos -> IO Pos) -> IO Pos) -> (Ptr Pos -> IO Pos) -> IO Pos
forall a b. (a -> b) -> a -> b
$ \Ptr Pos
p1 ->
(Ptr Pos -> IO Pos) -> IO Pos
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr Pos -> IO Pos) -> IO Pos) -> (Ptr Pos -> IO Pos) -> IO Pos
forall a b. (a -> b) -> a -> b
$ \Ptr Pos
pOut -> BodyId -> Ptr Pos -> Ptr Pos -> IO ()
c_b2Body_GetWorldPoint BodyId
a0 Ptr Pos
p1 Ptr Pos
pOut IO () -> IO Pos -> IO Pos
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr Pos -> IO Pos
forall a. Storable a => Ptr a -> IO a
peek Ptr Pos
pOut
getLocalVector
:: BodyId
-> Vec2
-> IO Vec2
getLocalVector :: BodyId -> Pos -> IO Pos
getLocalVector BodyId
a0 Pos
a1 =
Pos -> (Ptr Pos -> IO Pos) -> IO Pos
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Pos
a1 ((Ptr Pos -> IO Pos) -> IO Pos) -> (Ptr Pos -> IO Pos) -> IO Pos
forall a b. (a -> b) -> a -> b
$ \Ptr Pos
p1 ->
(Ptr Pos -> IO Pos) -> IO Pos
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr Pos -> IO Pos) -> IO Pos) -> (Ptr Pos -> IO Pos) -> IO Pos
forall a b. (a -> b) -> a -> b
$ \Ptr Pos
pOut -> BodyId -> Ptr Pos -> Ptr Pos -> IO ()
c_b2Body_GetLocalVector BodyId
a0 Ptr Pos
p1 Ptr Pos
pOut IO () -> IO Pos -> IO Pos
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr Pos -> IO Pos
forall a. Storable a => Ptr a -> IO a
peek Ptr Pos
pOut
getWorldVector
:: BodyId
-> Vec2
-> IO Vec2
getWorldVector :: BodyId -> Pos -> IO Pos
getWorldVector BodyId
a0 Pos
a1 =
Pos -> (Ptr Pos -> IO Pos) -> IO Pos
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Pos
a1 ((Ptr Pos -> IO Pos) -> IO Pos) -> (Ptr Pos -> IO Pos) -> IO Pos
forall a b. (a -> b) -> a -> b
$ \Ptr Pos
p1 ->
(Ptr Pos -> IO Pos) -> IO Pos
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr Pos -> IO Pos) -> IO Pos) -> (Ptr Pos -> IO Pos) -> IO Pos
forall a b. (a -> b) -> a -> b
$ \Ptr Pos
pOut -> BodyId -> Ptr Pos -> Ptr Pos -> IO ()
c_b2Body_GetWorldVector BodyId
a0 Ptr Pos
p1 Ptr Pos
pOut IO () -> IO Pos -> IO Pos
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr Pos -> IO Pos
forall a. Storable a => Ptr a -> IO a
peek Ptr Pos
pOut
getLinearVelocity
:: BodyId
-> IO Vec2
getLinearVelocity :: BodyId -> IO Pos
getLinearVelocity BodyId
a0 =
(Ptr Pos -> IO Pos) -> IO Pos
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr Pos -> IO Pos) -> IO Pos) -> (Ptr Pos -> IO Pos) -> IO Pos
forall a b. (a -> b) -> a -> b
$ \Ptr Pos
pOut -> BodyId -> Ptr Pos -> IO ()
c_b2Body_GetLinearVelocity BodyId
a0 Ptr Pos
pOut IO () -> IO Pos -> IO Pos
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr Pos -> IO Pos
forall a. Storable a => Ptr a -> IO a
peek Ptr Pos
pOut
getLinearVelocityInto
:: BodyId
-> Ptr Vec2
-> IO ()
getLinearVelocityInto :: BodyId -> Ptr Pos -> IO ()
getLinearVelocityInto BodyId
a0 Ptr Pos
out =
BodyId -> Ptr Pos -> IO ()
c_b2Body_GetLinearVelocity BodyId
a0 Ptr Pos
out
getAngularVelocity
:: BodyId
-> IO Float
getAngularVelocity :: BodyId -> IO Float
getAngularVelocity BodyId
a0 =
BodyId -> IO Float
c_b2Body_GetAngularVelocity BodyId
a0
setLinearVelocity
:: BodyId
-> Vec2
-> IO ()
setLinearVelocity :: BodyId -> Pos -> IO ()
setLinearVelocity BodyId
a0 Pos
a1 =
Pos -> (Ptr Pos -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Pos
a1 ((Ptr Pos -> IO ()) -> IO ()) -> (Ptr Pos -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Pos
p1 ->
BodyId -> Ptr Pos -> IO ()
c_b2Body_SetLinearVelocity BodyId
a0 Ptr Pos
p1
setAngularVelocity
:: BodyId
-> Float
-> IO ()
setAngularVelocity :: BodyId -> Float -> IO ()
setAngularVelocity BodyId
a0 Float
a1 =
BodyId -> Float -> IO ()
c_b2Body_SetAngularVelocity BodyId
a0 Float
a1
setTargetTransform
:: BodyId
-> WorldTransform
-> Float
-> Bool
-> IO ()
setTargetTransform :: BodyId -> WorldTransform -> Float -> Bool -> IO ()
setTargetTransform BodyId
a0 WorldTransform
a1 Float
a2 Bool
a3 =
WorldTransform -> (Ptr WorldTransform -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with WorldTransform
a1 ((Ptr WorldTransform -> IO ()) -> IO ())
-> (Ptr WorldTransform -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr WorldTransform
p1 ->
BodyId -> Ptr WorldTransform -> Float -> CBool -> IO ()
c_b2Body_SetTargetTransform BodyId
a0 Ptr WorldTransform
p1 Float
a2 (Bool -> CBool
forall a. Num a => Bool -> a
fromBool Bool
a3)
getLocalPointVelocity
:: BodyId
-> Vec2
-> IO Vec2
getLocalPointVelocity :: BodyId -> Pos -> IO Pos
getLocalPointVelocity BodyId
a0 Pos
a1 =
Pos -> (Ptr Pos -> IO Pos) -> IO Pos
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Pos
a1 ((Ptr Pos -> IO Pos) -> IO Pos) -> (Ptr Pos -> IO Pos) -> IO Pos
forall a b. (a -> b) -> a -> b
$ \Ptr Pos
p1 ->
(Ptr Pos -> IO Pos) -> IO Pos
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr Pos -> IO Pos) -> IO Pos) -> (Ptr Pos -> IO Pos) -> IO Pos
forall a b. (a -> b) -> a -> b
$ \Ptr Pos
pOut -> BodyId -> Ptr Pos -> Ptr Pos -> IO ()
c_b2Body_GetLocalPointVelocity BodyId
a0 Ptr Pos
p1 Ptr Pos
pOut IO () -> IO Pos -> IO Pos
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr Pos -> IO Pos
forall a. Storable a => Ptr a -> IO a
peek Ptr Pos
pOut
getWorldPointVelocity
:: BodyId
-> Pos
-> IO Vec2
getWorldPointVelocity :: BodyId -> Pos -> IO Pos
getWorldPointVelocity BodyId
a0 Pos
a1 =
Pos -> (Ptr Pos -> IO Pos) -> IO Pos
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Pos
a1 ((Ptr Pos -> IO Pos) -> IO Pos) -> (Ptr Pos -> IO Pos) -> IO Pos
forall a b. (a -> b) -> a -> b
$ \Ptr Pos
p1 ->
(Ptr Pos -> IO Pos) -> IO Pos
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr Pos -> IO Pos) -> IO Pos) -> (Ptr Pos -> IO Pos) -> IO Pos
forall a b. (a -> b) -> a -> b
$ \Ptr Pos
pOut -> BodyId -> Ptr Pos -> Ptr Pos -> IO ()
c_b2Body_GetWorldPointVelocity BodyId
a0 Ptr Pos
p1 Ptr Pos
pOut IO () -> IO Pos -> IO Pos
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr Pos -> IO Pos
forall a. Storable a => Ptr a -> IO a
peek Ptr Pos
pOut
applyForce
:: BodyId
-> Vec2
-> Pos
-> Bool
-> IO ()
applyForce :: BodyId -> Pos -> Pos -> Bool -> IO ()
applyForce BodyId
a0 Pos
a1 Pos
a2 Bool
a3 =
Pos -> (Ptr Pos -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Pos
a1 ((Ptr Pos -> IO ()) -> IO ()) -> (Ptr Pos -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Pos
p1 ->
Pos -> (Ptr Pos -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Pos
a2 ((Ptr Pos -> IO ()) -> IO ()) -> (Ptr Pos -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Pos
p2 ->
BodyId -> Ptr Pos -> Ptr Pos -> CBool -> IO ()
c_b2Body_ApplyForce BodyId
a0 Ptr Pos
p1 Ptr Pos
p2 (Bool -> CBool
forall a. Num a => Bool -> a
fromBool Bool
a3)
applyForceToCenter
:: BodyId
-> Vec2
-> Bool
-> IO ()
applyForceToCenter :: BodyId -> Pos -> Bool -> IO ()
applyForceToCenter BodyId
a0 Pos
a1 Bool
a2 =
Pos -> (Ptr Pos -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Pos
a1 ((Ptr Pos -> IO ()) -> IO ()) -> (Ptr Pos -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Pos
p1 ->
BodyId -> Ptr Pos -> CBool -> IO ()
c_b2Body_ApplyForceToCenter BodyId
a0 Ptr Pos
p1 (Bool -> CBool
forall a. Num a => Bool -> a
fromBool Bool
a2)
applyTorque
:: BodyId
-> Float
-> Bool
-> IO ()
applyTorque :: BodyId -> Float -> Bool -> IO ()
applyTorque BodyId
a0 Float
a1 Bool
a2 =
BodyId -> Float -> CBool -> IO ()
c_b2Body_ApplyTorque BodyId
a0 Float
a1 (Bool -> CBool
forall a. Num a => Bool -> a
fromBool Bool
a2)
clearForces
:: BodyId
-> IO ()
clearForces :: BodyId -> IO ()
clearForces BodyId
a0 =
BodyId -> IO ()
c_b2Body_ClearForces BodyId
a0
applyLinearImpulse
:: BodyId
-> Vec2
-> Pos
-> Bool
-> IO ()
applyLinearImpulse :: BodyId -> Pos -> Pos -> Bool -> IO ()
applyLinearImpulse BodyId
a0 Pos
a1 Pos
a2 Bool
a3 =
Pos -> (Ptr Pos -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Pos
a1 ((Ptr Pos -> IO ()) -> IO ()) -> (Ptr Pos -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Pos
p1 ->
Pos -> (Ptr Pos -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Pos
a2 ((Ptr Pos -> IO ()) -> IO ()) -> (Ptr Pos -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Pos
p2 ->
BodyId -> Ptr Pos -> Ptr Pos -> CBool -> IO ()
c_b2Body_ApplyLinearImpulse BodyId
a0 Ptr Pos
p1 Ptr Pos
p2 (Bool -> CBool
forall a. Num a => Bool -> a
fromBool Bool
a3)
applyLinearImpulseToCenter
:: BodyId
-> Vec2
-> Bool
-> IO ()
applyLinearImpulseToCenter :: BodyId -> Pos -> Bool -> IO ()
applyLinearImpulseToCenter BodyId
a0 Pos
a1 Bool
a2 =
Pos -> (Ptr Pos -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Pos
a1 ((Ptr Pos -> IO ()) -> IO ()) -> (Ptr Pos -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Pos
p1 ->
BodyId -> Ptr Pos -> CBool -> IO ()
c_b2Body_ApplyLinearImpulseToCenter BodyId
a0 Ptr Pos
p1 (Bool -> CBool
forall a. Num a => Bool -> a
fromBool Bool
a2)
applyAngularImpulse
:: BodyId
-> Float
-> Bool
-> IO ()
applyAngularImpulse :: BodyId -> Float -> Bool -> IO ()
applyAngularImpulse BodyId
a0 Float
a1 Bool
a2 =
BodyId -> Float -> CBool -> IO ()
c_b2Body_ApplyAngularImpulse BodyId
a0 Float
a1 (Bool -> CBool
forall a. Num a => Bool -> a
fromBool Bool
a2)
getMass
:: BodyId
-> IO Float
getMass :: BodyId -> IO Float
getMass BodyId
a0 =
BodyId -> IO Float
c_b2Body_GetMass BodyId
a0
getRotationalInertia
:: BodyId
-> IO Float
getRotationalInertia :: BodyId -> IO Float
getRotationalInertia BodyId
a0 =
BodyId -> IO Float
c_b2Body_GetRotationalInertia BodyId
a0
getLocalCenter
:: BodyId
-> IO Vec2
getLocalCenter :: BodyId -> IO Pos
getLocalCenter BodyId
a0 =
(Ptr Pos -> IO Pos) -> IO Pos
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr Pos -> IO Pos) -> IO Pos) -> (Ptr Pos -> IO Pos) -> IO Pos
forall a b. (a -> b) -> a -> b
$ \Ptr Pos
pOut -> BodyId -> Ptr Pos -> IO ()
c_b2Body_GetLocalCenter BodyId
a0 Ptr Pos
pOut IO () -> IO Pos -> IO Pos
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr Pos -> IO Pos
forall a. Storable a => Ptr a -> IO a
peek Ptr Pos
pOut
getLocalCenterInto
:: BodyId
-> Ptr Vec2
-> IO ()
getLocalCenterInto :: BodyId -> Ptr Pos -> IO ()
getLocalCenterInto BodyId
a0 Ptr Pos
out =
BodyId -> Ptr Pos -> IO ()
c_b2Body_GetLocalCenter BodyId
a0 Ptr Pos
out
getWorldCenter
:: BodyId
-> IO Pos
getWorldCenter :: BodyId -> IO Pos
getWorldCenter BodyId
a0 =
(Ptr Pos -> IO Pos) -> IO Pos
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr Pos -> IO Pos) -> IO Pos) -> (Ptr Pos -> IO Pos) -> IO Pos
forall a b. (a -> b) -> a -> b
$ \Ptr Pos
pOut -> BodyId -> Ptr Pos -> IO ()
c_b2Body_GetWorldCenter BodyId
a0 Ptr Pos
pOut IO () -> IO Pos -> IO Pos
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr Pos -> IO Pos
forall a. Storable a => Ptr a -> IO a
peek Ptr Pos
pOut
getWorldCenterInto
:: BodyId
-> Ptr Pos
-> IO ()
getWorldCenterInto :: BodyId -> Ptr Pos -> IO ()
getWorldCenterInto BodyId
a0 Ptr Pos
out =
BodyId -> Ptr Pos -> IO ()
c_b2Body_GetWorldCenter BodyId
a0 Ptr Pos
out
setMassData
:: BodyId
-> MassData
-> IO ()
setMassData :: BodyId -> MassData -> IO ()
setMassData BodyId
a0 MassData
a1 =
MassData -> (Ptr MassData -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with MassData
a1 ((Ptr MassData -> IO ()) -> IO ())
-> (Ptr MassData -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr MassData
p1 ->
BodyId -> Ptr MassData -> IO ()
c_b2Body_SetMassData BodyId
a0 Ptr MassData
p1
getMassData
:: BodyId
-> IO MassData
getMassData :: BodyId -> IO MassData
getMassData BodyId
a0 =
(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 -> BodyId -> Ptr MassData -> IO ()
c_b2Body_GetMassData BodyId
a0 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
getMassDataInto
:: BodyId
-> Ptr MassData
-> IO ()
getMassDataInto :: BodyId -> Ptr MassData -> IO ()
getMassDataInto BodyId
a0 Ptr MassData
out =
BodyId -> Ptr MassData -> IO ()
c_b2Body_GetMassData BodyId
a0 Ptr MassData
out
applyMassFromShapes
:: BodyId
-> IO ()
applyMassFromShapes :: BodyId -> IO ()
applyMassFromShapes BodyId
a0 =
BodyId -> IO ()
c_b2Body_ApplyMassFromShapes BodyId
a0
setLinearDamping
:: BodyId
-> Float
-> IO ()
setLinearDamping :: BodyId -> Float -> IO ()
setLinearDamping BodyId
a0 Float
a1 =
BodyId -> Float -> IO ()
c_b2Body_SetLinearDamping BodyId
a0 Float
a1
getLinearDamping
:: BodyId
-> IO Float
getLinearDamping :: BodyId -> IO Float
getLinearDamping BodyId
a0 =
BodyId -> IO Float
c_b2Body_GetLinearDamping BodyId
a0
setAngularDamping
:: BodyId
-> Float
-> IO ()
setAngularDamping :: BodyId -> Float -> IO ()
setAngularDamping BodyId
a0 Float
a1 =
BodyId -> Float -> IO ()
c_b2Body_SetAngularDamping BodyId
a0 Float
a1
getAngularDamping
:: BodyId
-> IO Float
getAngularDamping :: BodyId -> IO Float
getAngularDamping BodyId
a0 =
BodyId -> IO Float
c_b2Body_GetAngularDamping BodyId
a0
setGravityScale
:: BodyId
-> Float
-> IO ()
setGravityScale :: BodyId -> Float -> IO ()
setGravityScale BodyId
a0 Float
a1 =
BodyId -> Float -> IO ()
c_b2Body_SetGravityScale BodyId
a0 Float
a1
getGravityScale
:: BodyId
-> IO Float
getGravityScale :: BodyId -> IO Float
getGravityScale BodyId
a0 =
BodyId -> IO Float
c_b2Body_GetGravityScale BodyId
a0
isAwake
:: BodyId
-> IO Bool
isAwake :: BodyId -> IO Bool
isAwake BodyId
a0 =
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
<$> (BodyId -> IO CBool
c_b2Body_IsAwake BodyId
a0)
setAwake
:: BodyId
-> Bool
-> IO ()
setAwake :: BodyId -> Bool -> IO ()
setAwake BodyId
a0 Bool
a1 =
BodyId -> CBool -> IO ()
c_b2Body_SetAwake BodyId
a0 (Bool -> CBool
forall a. Num a => Bool -> a
fromBool Bool
a1)
wakeTouching
:: BodyId
-> IO ()
wakeTouching :: BodyId -> IO ()
wakeTouching BodyId
a0 =
BodyId -> IO ()
c_b2Body_WakeTouching BodyId
a0
enableSleep
:: BodyId
-> Bool
-> IO ()
enableSleep :: BodyId -> Bool -> IO ()
enableSleep BodyId
a0 Bool
a1 =
BodyId -> CBool -> IO ()
c_b2Body_EnableSleep BodyId
a0 (Bool -> CBool
forall a. Num a => Bool -> a
fromBool Bool
a1)
isSleepEnabled
:: BodyId
-> IO Bool
isSleepEnabled :: BodyId -> IO Bool
isSleepEnabled BodyId
a0 =
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
<$> (BodyId -> IO CBool
c_b2Body_IsSleepEnabled BodyId
a0)
setSleepThreshold
:: BodyId
-> Float
-> IO ()
setSleepThreshold :: BodyId -> Float -> IO ()
setSleepThreshold BodyId
a0 Float
a1 =
BodyId -> Float -> IO ()
c_b2Body_SetSleepThreshold BodyId
a0 Float
a1
getSleepThreshold
:: BodyId
-> IO Float
getSleepThreshold :: BodyId -> IO Float
getSleepThreshold BodyId
a0 =
BodyId -> IO Float
c_b2Body_GetSleepThreshold BodyId
a0
isEnabled
:: BodyId
-> IO Bool
isEnabled :: BodyId -> IO Bool
isEnabled BodyId
a0 =
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
<$> (BodyId -> IO CBool
c_b2Body_IsEnabled BodyId
a0)
disable
:: BodyId
-> IO ()
disable :: BodyId -> IO ()
disable BodyId
a0 =
BodyId -> IO ()
c_b2Body_Disable BodyId
a0
enable
:: BodyId
-> IO ()
enable :: BodyId -> IO ()
enable BodyId
a0 =
BodyId -> IO ()
c_b2Body_Enable BodyId
a0
setMotionLocks
:: BodyId
-> MotionLocks
-> IO ()
setMotionLocks :: BodyId -> MotionLocks -> IO ()
setMotionLocks BodyId
a0 MotionLocks
a1 =
MotionLocks -> (Ptr MotionLocks -> IO ()) -> IO ()
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with MotionLocks
a1 ((Ptr MotionLocks -> IO ()) -> IO ())
-> (Ptr MotionLocks -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr MotionLocks
p1 ->
BodyId -> Ptr MotionLocks -> IO ()
c_b2Body_SetMotionLocks BodyId
a0 Ptr MotionLocks
p1
getMotionLocks
:: BodyId
-> IO MotionLocks
getMotionLocks :: BodyId -> IO MotionLocks
getMotionLocks BodyId
a0 =
(Ptr MotionLocks -> IO MotionLocks) -> IO MotionLocks
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr MotionLocks -> IO MotionLocks) -> IO MotionLocks)
-> (Ptr MotionLocks -> IO MotionLocks) -> IO MotionLocks
forall a b. (a -> b) -> a -> b
$ \Ptr MotionLocks
pOut -> BodyId -> Ptr MotionLocks -> IO ()
c_b2Body_GetMotionLocks BodyId
a0 Ptr MotionLocks
pOut IO () -> IO MotionLocks -> IO MotionLocks
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Ptr MotionLocks -> IO MotionLocks
forall a. Storable a => Ptr a -> IO a
peek Ptr MotionLocks
pOut
getMotionLocksInto
:: BodyId
-> Ptr MotionLocks
-> IO ()
getMotionLocksInto :: BodyId -> Ptr MotionLocks -> IO ()
getMotionLocksInto BodyId
a0 Ptr MotionLocks
out =
BodyId -> Ptr MotionLocks -> IO ()
c_b2Body_GetMotionLocks BodyId
a0 Ptr MotionLocks
out
setBullet
:: BodyId
-> Bool
-> IO ()
setBullet :: BodyId -> Bool -> IO ()
setBullet BodyId
a0 Bool
a1 =
BodyId -> CBool -> IO ()
c_b2Body_SetBullet BodyId
a0 (Bool -> CBool
forall a. Num a => Bool -> a
fromBool Bool
a1)
isBullet
:: BodyId
-> IO Bool
isBullet :: BodyId -> IO Bool
isBullet BodyId
a0 =
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
<$> (BodyId -> IO CBool
c_b2Body_IsBullet BodyId
a0)
enableContactRecycling
:: BodyId
-> Bool
-> IO ()
enableContactRecycling :: BodyId -> Bool -> IO ()
enableContactRecycling BodyId
a0 Bool
a1 =
BodyId -> CBool -> IO ()
c_b2Body_EnableContactRecycling BodyId
a0 (Bool -> CBool
forall a. Num a => Bool -> a
fromBool Bool
a1)
isContactRecyclingEnabled
:: BodyId
-> IO Bool
isContactRecyclingEnabled :: BodyId -> IO Bool
isContactRecyclingEnabled BodyId
a0 =
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
<$> (BodyId -> IO CBool
c_b2Body_IsContactRecyclingEnabled BodyId
a0)
enableContactEvents
:: BodyId
-> Bool
-> IO ()
enableContactEvents :: BodyId -> Bool -> IO ()
enableContactEvents BodyId
a0 Bool
a1 =
BodyId -> CBool -> IO ()
c_b2Body_EnableContactEvents BodyId
a0 (Bool -> CBool
forall a. Num a => Bool -> a
fromBool Bool
a1)
enableHitEvents
:: BodyId
-> Bool
-> IO ()
enableHitEvents :: BodyId -> Bool -> IO ()
enableHitEvents BodyId
a0 Bool
a1 =
BodyId -> CBool -> IO ()
c_b2Body_EnableHitEvents BodyId
a0 (Bool -> CBool
forall a. Num a => Bool -> a
fromBool Bool
a1)
getWorld
:: BodyId
-> IO WorldId
getWorld :: BodyId -> IO WorldId
getWorld BodyId
a0 =
BodyId -> IO WorldId
c_b2Body_GetWorld BodyId
a0
getShapeCount
:: BodyId
-> IO Int
getShapeCount :: BodyId -> IO Int
getShapeCount BodyId
a0 =
CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (BodyId -> IO CInt
c_b2Body_GetShapeCount BodyId
a0)
getShapes
:: BodyId
-> Ptr ShapeId
-> Int
-> IO Int
getShapes :: BodyId -> Ptr ShapeId -> Int -> IO Int
getShapes BodyId
a0 Ptr ShapeId
a1 Int
a2 =
CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (BodyId -> Ptr ShapeId -> CInt -> IO CInt
c_b2Body_GetShapes BodyId
a0 Ptr ShapeId
a1 (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
a2))
getJointCount
:: BodyId
-> IO Int
getJointCount :: BodyId -> IO Int
getJointCount BodyId
a0 =
CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (BodyId -> IO CInt
c_b2Body_GetJointCount BodyId
a0)
getJoints
:: BodyId
-> Ptr JointId
-> Int
-> IO Int
getJoints :: BodyId -> Ptr JointId -> Int -> IO Int
getJoints BodyId
a0 Ptr JointId
a1 Int
a2 =
CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (BodyId -> Ptr JointId -> CInt -> IO CInt
c_b2Body_GetJoints BodyId
a0 Ptr JointId
a1 (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
a2))
getContactCapacity
:: BodyId
-> IO Int
getContactCapacity :: BodyId -> IO Int
getContactCapacity BodyId
a0 =
CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (BodyId -> IO CInt
c_b2Body_GetContactCapacity BodyId
a0)
getContactData
:: BodyId
-> Ptr ContactData
-> Int
-> IO Int
getContactData :: BodyId -> Ptr ContactData -> Int -> IO Int
getContactData BodyId
a0 Ptr ContactData
a1 Int
a2 =
CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (CInt -> Int) -> IO CInt -> IO Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (BodyId -> Ptr ContactData -> CInt -> IO CInt
c_b2Body_GetContactData BodyId
a0 Ptr ContactData
a1 (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
a2))
computeAABB
:: BodyId
-> IO AABB
computeAABB :: BodyId -> IO AABB
computeAABB BodyId
a0 =
(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 -> BodyId -> Ptr AABB -> IO ()
c_b2Body_ComputeAABB BodyId
a0 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
computeAABBInto
:: BodyId
-> Ptr AABB
-> IO ()
computeAABBInto :: BodyId -> Ptr AABB -> IO ()
computeAABBInto BodyId
a0 Ptr AABB
out =
BodyId -> Ptr AABB -> IO ()
c_b2Body_ComputeAABB BodyId
a0 Ptr AABB
out