module Box2D.DistanceJoint
( create
, setLength
, getLength
, enableSpring
, isSpringEnabled
, setSpringForceRange
, getSpringForceRange
, setSpringHertz
, setSpringDampingRatio
, getSpringHertz
, getSpringDampingRatio
, enableLimit
, isLimitEnabled
, setLengthRange
, getMinLength
, getMaxLength
, getCurrentLength
, enableMotor
, isMotorEnabled
, setMotorSpeed
, getMotorSpeed
, setMaxMotorForce
, getMaxMotorForce
, getMotorForce
)
where
import Foreign
import Foreign.C.Types (CBool(..))
import Box2D.Id (JointId(..), WorldId(..))
import Box2D.Types (DistanceJointDef)
foreign import ccall unsafe "b2CreateDistanceJoint"
c_b2CreateDistanceJoint :: WorldId -> Ptr DistanceJointDef -> IO JointId
foreign import ccall unsafe "b2DistanceJoint_SetLength"
c_b2DistanceJoint_SetLength :: JointId -> Float -> IO ()
foreign import ccall unsafe "b2DistanceJoint_GetLength"
c_b2DistanceJoint_GetLength :: JointId -> IO Float
foreign import ccall unsafe "b2DistanceJoint_EnableSpring"
c_b2DistanceJoint_EnableSpring :: JointId -> CBool -> IO ()
foreign import ccall unsafe "b2DistanceJoint_IsSpringEnabled"
c_b2DistanceJoint_IsSpringEnabled :: JointId -> IO CBool
foreign import ccall unsafe "b2DistanceJoint_SetSpringForceRange"
c_b2DistanceJoint_SetSpringForceRange :: JointId -> Float -> Float -> IO ()
foreign import ccall unsafe "b2DistanceJoint_GetSpringForceRange"
c_b2DistanceJoint_GetSpringForceRange :: JointId -> Ptr Float -> Ptr Float -> IO ()
foreign import ccall unsafe "b2DistanceJoint_SetSpringHertz"
c_b2DistanceJoint_SetSpringHertz :: JointId -> Float -> IO ()
foreign import ccall unsafe "b2DistanceJoint_SetSpringDampingRatio"
c_b2DistanceJoint_SetSpringDampingRatio :: JointId -> Float -> IO ()
foreign import ccall unsafe "b2DistanceJoint_GetSpringHertz"
c_b2DistanceJoint_GetSpringHertz :: JointId -> IO Float
foreign import ccall unsafe "b2DistanceJoint_GetSpringDampingRatio"
c_b2DistanceJoint_GetSpringDampingRatio :: JointId -> IO Float
foreign import ccall unsafe "b2DistanceJoint_EnableLimit"
c_b2DistanceJoint_EnableLimit :: JointId -> CBool -> IO ()
foreign import ccall unsafe "b2DistanceJoint_IsLimitEnabled"
c_b2DistanceJoint_IsLimitEnabled :: JointId -> IO CBool
foreign import ccall unsafe "b2DistanceJoint_SetLengthRange"
c_b2DistanceJoint_SetLengthRange :: JointId -> Float -> Float -> IO ()
foreign import ccall unsafe "b2DistanceJoint_GetMinLength"
c_b2DistanceJoint_GetMinLength :: JointId -> IO Float
foreign import ccall unsafe "b2DistanceJoint_GetMaxLength"
c_b2DistanceJoint_GetMaxLength :: JointId -> IO Float
foreign import ccall unsafe "b2DistanceJoint_GetCurrentLength"
c_b2DistanceJoint_GetCurrentLength :: JointId -> IO Float
foreign import ccall unsafe "b2DistanceJoint_EnableMotor"
c_b2DistanceJoint_EnableMotor :: JointId -> CBool -> IO ()
foreign import ccall unsafe "b2DistanceJoint_IsMotorEnabled"
c_b2DistanceJoint_IsMotorEnabled :: JointId -> IO CBool
foreign import ccall unsafe "b2DistanceJoint_SetMotorSpeed"
c_b2DistanceJoint_SetMotorSpeed :: JointId -> Float -> IO ()
foreign import ccall unsafe "b2DistanceJoint_GetMotorSpeed"
c_b2DistanceJoint_GetMotorSpeed :: JointId -> IO Float
foreign import ccall unsafe "b2DistanceJoint_SetMaxMotorForce"
c_b2DistanceJoint_SetMaxMotorForce :: JointId -> Float -> IO ()
foreign import ccall unsafe "b2DistanceJoint_GetMaxMotorForce"
c_b2DistanceJoint_GetMaxMotorForce :: JointId -> IO Float
foreign import ccall unsafe "b2DistanceJoint_GetMotorForce"
c_b2DistanceJoint_GetMotorForce :: JointId -> IO Float
create
:: WorldId
-> DistanceJointDef
-> IO JointId
create :: WorldId -> DistanceJointDef -> IO JointId
create WorldId
a0 DistanceJointDef
a1 =
DistanceJointDef
-> (Ptr DistanceJointDef -> IO JointId) -> IO JointId
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with DistanceJointDef
a1 ((Ptr DistanceJointDef -> IO JointId) -> IO JointId)
-> (Ptr DistanceJointDef -> IO JointId) -> IO JointId
forall a b. (a -> b) -> a -> b
$ \Ptr DistanceJointDef
p1 ->
WorldId -> Ptr DistanceJointDef -> IO JointId
c_b2CreateDistanceJoint WorldId
a0 Ptr DistanceJointDef
p1
setLength
:: JointId
-> Float
-> IO ()
setLength :: JointId -> Float -> IO ()
setLength JointId
a0 Float
a1 =
JointId -> Float -> IO ()
c_b2DistanceJoint_SetLength JointId
a0 Float
a1
getLength
:: JointId
-> IO Float
getLength :: JointId -> IO Float
getLength JointId
a0 =
JointId -> IO Float
c_b2DistanceJoint_GetLength JointId
a0
enableSpring
:: JointId
-> Bool
-> IO ()
enableSpring :: JointId -> Bool -> IO ()
enableSpring JointId
a0 Bool
a1 =
JointId -> CBool -> IO ()
c_b2DistanceJoint_EnableSpring JointId
a0 (Bool -> CBool
forall a. Num a => Bool -> a
fromBool Bool
a1)
isSpringEnabled
:: JointId
-> IO Bool
isSpringEnabled :: JointId -> IO Bool
isSpringEnabled JointId
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
<$> (JointId -> IO CBool
c_b2DistanceJoint_IsSpringEnabled JointId
a0)
setSpringForceRange
:: JointId
-> Float
-> Float
-> IO ()
setSpringForceRange :: JointId -> Float -> Float -> IO ()
setSpringForceRange JointId
a0 Float
a1 Float
a2 =
JointId -> Float -> Float -> IO ()
c_b2DistanceJoint_SetSpringForceRange JointId
a0 Float
a1 Float
a2
getSpringForceRange
:: JointId
-> Ptr Float
-> Ptr Float
-> IO ()
getSpringForceRange :: JointId -> Ptr Float -> Ptr Float -> IO ()
getSpringForceRange JointId
a0 Ptr Float
a1 Ptr Float
a2 =
JointId -> Ptr Float -> Ptr Float -> IO ()
c_b2DistanceJoint_GetSpringForceRange JointId
a0 Ptr Float
a1 Ptr Float
a2
setSpringHertz
:: JointId
-> Float
-> IO ()
setSpringHertz :: JointId -> Float -> IO ()
setSpringHertz JointId
a0 Float
a1 =
JointId -> Float -> IO ()
c_b2DistanceJoint_SetSpringHertz JointId
a0 Float
a1
setSpringDampingRatio
:: JointId
-> Float
-> IO ()
setSpringDampingRatio :: JointId -> Float -> IO ()
setSpringDampingRatio JointId
a0 Float
a1 =
JointId -> Float -> IO ()
c_b2DistanceJoint_SetSpringDampingRatio JointId
a0 Float
a1
getSpringHertz
:: JointId
-> IO Float
getSpringHertz :: JointId -> IO Float
getSpringHertz JointId
a0 =
JointId -> IO Float
c_b2DistanceJoint_GetSpringHertz JointId
a0
getSpringDampingRatio
:: JointId
-> IO Float
getSpringDampingRatio :: JointId -> IO Float
getSpringDampingRatio JointId
a0 =
JointId -> IO Float
c_b2DistanceJoint_GetSpringDampingRatio JointId
a0
enableLimit
:: JointId
-> Bool
-> IO ()
enableLimit :: JointId -> Bool -> IO ()
enableLimit JointId
a0 Bool
a1 =
JointId -> CBool -> IO ()
c_b2DistanceJoint_EnableLimit JointId
a0 (Bool -> CBool
forall a. Num a => Bool -> a
fromBool Bool
a1)
isLimitEnabled
:: JointId
-> IO Bool
isLimitEnabled :: JointId -> IO Bool
isLimitEnabled JointId
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
<$> (JointId -> IO CBool
c_b2DistanceJoint_IsLimitEnabled JointId
a0)
setLengthRange
:: JointId
-> Float
-> Float
-> IO ()
setLengthRange :: JointId -> Float -> Float -> IO ()
setLengthRange JointId
a0 Float
a1 Float
a2 =
JointId -> Float -> Float -> IO ()
c_b2DistanceJoint_SetLengthRange JointId
a0 Float
a1 Float
a2
getMinLength
:: JointId
-> IO Float
getMinLength :: JointId -> IO Float
getMinLength JointId
a0 =
JointId -> IO Float
c_b2DistanceJoint_GetMinLength JointId
a0
getMaxLength
:: JointId
-> IO Float
getMaxLength :: JointId -> IO Float
getMaxLength JointId
a0 =
JointId -> IO Float
c_b2DistanceJoint_GetMaxLength JointId
a0
getCurrentLength
:: JointId
-> IO Float
getCurrentLength :: JointId -> IO Float
getCurrentLength JointId
a0 =
JointId -> IO Float
c_b2DistanceJoint_GetCurrentLength JointId
a0
enableMotor
:: JointId
-> Bool
-> IO ()
enableMotor :: JointId -> Bool -> IO ()
enableMotor JointId
a0 Bool
a1 =
JointId -> CBool -> IO ()
c_b2DistanceJoint_EnableMotor JointId
a0 (Bool -> CBool
forall a. Num a => Bool -> a
fromBool Bool
a1)
isMotorEnabled
:: JointId
-> IO Bool
isMotorEnabled :: JointId -> IO Bool
isMotorEnabled JointId
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
<$> (JointId -> IO CBool
c_b2DistanceJoint_IsMotorEnabled JointId
a0)
setMotorSpeed
:: JointId
-> Float
-> IO ()
setMotorSpeed :: JointId -> Float -> IO ()
setMotorSpeed JointId
a0 Float
a1 =
JointId -> Float -> IO ()
c_b2DistanceJoint_SetMotorSpeed JointId
a0 Float
a1
getMotorSpeed
:: JointId
-> IO Float
getMotorSpeed :: JointId -> IO Float
getMotorSpeed JointId
a0 =
JointId -> IO Float
c_b2DistanceJoint_GetMotorSpeed JointId
a0
setMaxMotorForce
:: JointId
-> Float
-> IO ()
setMaxMotorForce :: JointId -> Float -> IO ()
setMaxMotorForce JointId
a0 Float
a1 =
JointId -> Float -> IO ()
c_b2DistanceJoint_SetMaxMotorForce JointId
a0 Float
a1
getMaxMotorForce
:: JointId
-> IO Float
getMaxMotorForce :: JointId -> IO Float
getMaxMotorForce JointId
a0 =
JointId -> IO Float
c_b2DistanceJoint_GetMaxMotorForce JointId
a0
getMotorForce
:: JointId
-> IO Float
getMotorForce :: JointId -> IO Float
getMotorForce JointId
a0 =
JointId -> IO Float
c_b2DistanceJoint_GetMotorForce JointId
a0