module Box2D.MotorJoint
( create
, setLinearVelocity
, getLinearVelocity
, getLinearVelocityInto
, setAngularVelocity
, getAngularVelocity
, setMaxVelocityForce
, getMaxVelocityForce
, setMaxVelocityTorque
, getMaxVelocityTorque
, setLinearHertz
, getLinearHertz
, setLinearDampingRatio
, getLinearDampingRatio
, setAngularHertz
, getAngularHertz
, setAngularDampingRatio
, getAngularDampingRatio
, setMaxSpringForce
, getMaxSpringForce
, setMaxSpringTorque
, getMaxSpringTorque
)
where
import Foreign
import Box2D.Id (JointId(..), WorldId(..))
import Box2D.MathTypes (Vec2)
import Box2D.Types (MotorJointDef)
foreign import ccall unsafe "b2CreateMotorJoint"
c_b2CreateMotorJoint :: WorldId -> Ptr MotorJointDef -> IO JointId
foreign import ccall unsafe "hsg_b2MotorJoint_SetLinearVelocity"
c_b2MotorJoint_SetLinearVelocity :: JointId -> Ptr Vec2 -> IO ()
foreign import ccall unsafe "hsg_b2MotorJoint_GetLinearVelocity"
c_b2MotorJoint_GetLinearVelocity :: JointId -> Ptr Vec2 -> IO ()
foreign import ccall unsafe "b2MotorJoint_SetAngularVelocity"
c_b2MotorJoint_SetAngularVelocity :: JointId -> Float -> IO ()
foreign import ccall unsafe "b2MotorJoint_GetAngularVelocity"
c_b2MotorJoint_GetAngularVelocity :: JointId -> IO Float
foreign import ccall unsafe "b2MotorJoint_SetMaxVelocityForce"
c_b2MotorJoint_SetMaxVelocityForce :: JointId -> Float -> IO ()
foreign import ccall unsafe "b2MotorJoint_GetMaxVelocityForce"
c_b2MotorJoint_GetMaxVelocityForce :: JointId -> IO Float
foreign import ccall unsafe "b2MotorJoint_SetMaxVelocityTorque"
c_b2MotorJoint_SetMaxVelocityTorque :: JointId -> Float -> IO ()
foreign import ccall unsafe "b2MotorJoint_GetMaxVelocityTorque"
c_b2MotorJoint_GetMaxVelocityTorque :: JointId -> IO Float
foreign import ccall unsafe "b2MotorJoint_SetLinearHertz"
c_b2MotorJoint_SetLinearHertz :: JointId -> Float -> IO ()
foreign import ccall unsafe "b2MotorJoint_GetLinearHertz"
c_b2MotorJoint_GetLinearHertz :: JointId -> IO Float
foreign import ccall unsafe "b2MotorJoint_SetLinearDampingRatio"
c_b2MotorJoint_SetLinearDampingRatio :: JointId -> Float -> IO ()
foreign import ccall unsafe "b2MotorJoint_GetLinearDampingRatio"
c_b2MotorJoint_GetLinearDampingRatio :: JointId -> IO Float
foreign import ccall unsafe "b2MotorJoint_SetAngularHertz"
c_b2MotorJoint_SetAngularHertz :: JointId -> Float -> IO ()
foreign import ccall unsafe "b2MotorJoint_GetAngularHertz"
c_b2MotorJoint_GetAngularHertz :: JointId -> IO Float
foreign import ccall unsafe "b2MotorJoint_SetAngularDampingRatio"
c_b2MotorJoint_SetAngularDampingRatio :: JointId -> Float -> IO ()
foreign import ccall unsafe "b2MotorJoint_GetAngularDampingRatio"
c_b2MotorJoint_GetAngularDampingRatio :: JointId -> IO Float
foreign import ccall unsafe "b2MotorJoint_SetMaxSpringForce"
c_b2MotorJoint_SetMaxSpringForce :: JointId -> Float -> IO ()
foreign import ccall unsafe "b2MotorJoint_GetMaxSpringForce"
c_b2MotorJoint_GetMaxSpringForce :: JointId -> IO Float
foreign import ccall unsafe "b2MotorJoint_SetMaxSpringTorque"
c_b2MotorJoint_SetMaxSpringTorque :: JointId -> Float -> IO ()
foreign import ccall unsafe "b2MotorJoint_GetMaxSpringTorque"
c_b2MotorJoint_GetMaxSpringTorque :: JointId -> IO Float
create
:: WorldId
-> MotorJointDef
-> IO JointId
create :: WorldId -> MotorJointDef -> IO JointId
create WorldId
a0 MotorJointDef
a1 =
MotorJointDef -> (Ptr MotorJointDef -> IO JointId) -> IO JointId
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with MotorJointDef
a1 ((Ptr MotorJointDef -> IO JointId) -> IO JointId)
-> (Ptr MotorJointDef -> IO JointId) -> IO JointId
forall a b. (a -> b) -> a -> b
$ \Ptr MotorJointDef
p1 ->
WorldId -> Ptr MotorJointDef -> IO JointId
c_b2CreateMotorJoint WorldId
a0 Ptr MotorJointDef
p1
setLinearVelocity
:: JointId
-> Vec2
-> IO ()
setLinearVelocity :: JointId -> Vec2 -> IO ()
setLinearVelocity JointId
a0 Vec2
a1 =
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 ->
JointId -> Ptr Vec2 -> IO ()
c_b2MotorJoint_SetLinearVelocity JointId
a0 Ptr Vec2
p1
getLinearVelocity
:: JointId
-> IO Vec2
getLinearVelocity :: JointId -> IO Vec2
getLinearVelocity JointId
a0 =
(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 -> JointId -> Ptr Vec2 -> IO ()
c_b2MotorJoint_GetLinearVelocity JointId
a0 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
getLinearVelocityInto
:: JointId
-> Ptr Vec2
-> IO ()
getLinearVelocityInto :: JointId -> Ptr Vec2 -> IO ()
getLinearVelocityInto JointId
a0 Ptr Vec2
out =
JointId -> Ptr Vec2 -> IO ()
c_b2MotorJoint_GetLinearVelocity JointId
a0 Ptr Vec2
out
setAngularVelocity
:: JointId
-> Float
-> IO ()
setAngularVelocity :: JointId -> Float -> IO ()
setAngularVelocity JointId
a0 Float
a1 =
JointId -> Float -> IO ()
c_b2MotorJoint_SetAngularVelocity JointId
a0 Float
a1
getAngularVelocity
:: JointId
-> IO Float
getAngularVelocity :: JointId -> IO Float
getAngularVelocity JointId
a0 =
JointId -> IO Float
c_b2MotorJoint_GetAngularVelocity JointId
a0
setMaxVelocityForce
:: JointId
-> Float
-> IO ()
setMaxVelocityForce :: JointId -> Float -> IO ()
setMaxVelocityForce JointId
a0 Float
a1 =
JointId -> Float -> IO ()
c_b2MotorJoint_SetMaxVelocityForce JointId
a0 Float
a1
getMaxVelocityForce
:: JointId
-> IO Float
getMaxVelocityForce :: JointId -> IO Float
getMaxVelocityForce JointId
a0 =
JointId -> IO Float
c_b2MotorJoint_GetMaxVelocityForce JointId
a0
setMaxVelocityTorque
:: JointId
-> Float
-> IO ()
setMaxVelocityTorque :: JointId -> Float -> IO ()
setMaxVelocityTorque JointId
a0 Float
a1 =
JointId -> Float -> IO ()
c_b2MotorJoint_SetMaxVelocityTorque JointId
a0 Float
a1
getMaxVelocityTorque
:: JointId
-> IO Float
getMaxVelocityTorque :: JointId -> IO Float
getMaxVelocityTorque JointId
a0 =
JointId -> IO Float
c_b2MotorJoint_GetMaxVelocityTorque JointId
a0
setLinearHertz
:: JointId
-> Float
-> IO ()
setLinearHertz :: JointId -> Float -> IO ()
setLinearHertz JointId
a0 Float
a1 =
JointId -> Float -> IO ()
c_b2MotorJoint_SetLinearHertz JointId
a0 Float
a1
getLinearHertz
:: JointId
-> IO Float
getLinearHertz :: JointId -> IO Float
getLinearHertz JointId
a0 =
JointId -> IO Float
c_b2MotorJoint_GetLinearHertz JointId
a0
setLinearDampingRatio
:: JointId
-> Float
-> IO ()
setLinearDampingRatio :: JointId -> Float -> IO ()
setLinearDampingRatio JointId
a0 Float
a1 =
JointId -> Float -> IO ()
c_b2MotorJoint_SetLinearDampingRatio JointId
a0 Float
a1
getLinearDampingRatio
:: JointId
-> IO Float
getLinearDampingRatio :: JointId -> IO Float
getLinearDampingRatio JointId
a0 =
JointId -> IO Float
c_b2MotorJoint_GetLinearDampingRatio JointId
a0
setAngularHertz
:: JointId
-> Float
-> IO ()
setAngularHertz :: JointId -> Float -> IO ()
setAngularHertz JointId
a0 Float
a1 =
JointId -> Float -> IO ()
c_b2MotorJoint_SetAngularHertz JointId
a0 Float
a1
getAngularHertz
:: JointId
-> IO Float
getAngularHertz :: JointId -> IO Float
getAngularHertz JointId
a0 =
JointId -> IO Float
c_b2MotorJoint_GetAngularHertz JointId
a0
setAngularDampingRatio
:: JointId
-> Float
-> IO ()
setAngularDampingRatio :: JointId -> Float -> IO ()
setAngularDampingRatio JointId
a0 Float
a1 =
JointId -> Float -> IO ()
c_b2MotorJoint_SetAngularDampingRatio JointId
a0 Float
a1
getAngularDampingRatio
:: JointId
-> IO Float
getAngularDampingRatio :: JointId -> IO Float
getAngularDampingRatio JointId
a0 =
JointId -> IO Float
c_b2MotorJoint_GetAngularDampingRatio JointId
a0
setMaxSpringForce
:: JointId
-> Float
-> IO ()
setMaxSpringForce :: JointId -> Float -> IO ()
setMaxSpringForce JointId
a0 Float
a1 =
JointId -> Float -> IO ()
c_b2MotorJoint_SetMaxSpringForce JointId
a0 Float
a1
getMaxSpringForce
:: JointId
-> IO Float
getMaxSpringForce :: JointId -> IO Float
getMaxSpringForce JointId
a0 =
JointId -> IO Float
c_b2MotorJoint_GetMaxSpringForce JointId
a0
setMaxSpringTorque
:: JointId
-> Float
-> IO ()
setMaxSpringTorque :: JointId -> Float -> IO ()
setMaxSpringTorque JointId
a0 Float
a1 =
JointId -> Float -> IO ()
c_b2MotorJoint_SetMaxSpringTorque JointId
a0 Float
a1
getMaxSpringTorque
:: JointId
-> IO Float
getMaxSpringTorque :: JointId -> IO Float
getMaxSpringTorque JointId
a0 =
JointId -> IO Float
c_b2MotorJoint_GetMaxSpringTorque JointId
a0