-- Produced by boxnd-gen; edit the generator, not this file.

module Box2D.WeldJoint
  ( create
  , setLinearHertz
  , getLinearHertz
  , setLinearDampingRatio
  , getLinearDampingRatio
  , setAngularHertz
  , getAngularHertz
  , setAngularDampingRatio
  , getAngularDampingRatio
  )

  where

import Foreign
import Box2D.Id (JointId(..), WorldId(..))
import Box2D.Types (WeldJointDef)

foreign import ccall unsafe "b2CreateWeldJoint"
  c_b2CreateWeldJoint :: WorldId -> Ptr WeldJointDef -> IO JointId

foreign import ccall unsafe "b2WeldJoint_SetLinearHertz"
  c_b2WeldJoint_SetLinearHertz :: JointId -> Float -> IO ()

foreign import ccall unsafe "b2WeldJoint_GetLinearHertz"
  c_b2WeldJoint_GetLinearHertz :: JointId -> IO Float

foreign import ccall unsafe "b2WeldJoint_SetLinearDampingRatio"
  c_b2WeldJoint_SetLinearDampingRatio :: JointId -> Float -> IO ()

foreign import ccall unsafe "b2WeldJoint_GetLinearDampingRatio"
  c_b2WeldJoint_GetLinearDampingRatio :: JointId -> IO Float

foreign import ccall unsafe "b2WeldJoint_SetAngularHertz"
  c_b2WeldJoint_SetAngularHertz :: JointId -> Float -> IO ()

foreign import ccall unsafe "b2WeldJoint_GetAngularHertz"
  c_b2WeldJoint_GetAngularHertz :: JointId -> IO Float

foreign import ccall unsafe "b2WeldJoint_SetAngularDampingRatio"
  c_b2WeldJoint_SetAngularDampingRatio :: JointId -> Float -> IO ()

foreign import ccall unsafe "b2WeldJoint_GetAngularDampingRatio"
  c_b2WeldJoint_GetAngularDampingRatio :: JointId -> IO Float

{- | Create a weld joint
See also b2WeldJointDef for details.

Binds @b2CreateWeldJoint@.
-}
create
  :: WorldId
  -> WeldJointDef
  -> IO JointId
create :: WorldId -> WeldJointDef -> IO JointId
create WorldId
a0 WeldJointDef
a1 =
  WeldJointDef -> (Ptr WeldJointDef -> IO JointId) -> IO JointId
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with WeldJointDef
a1 ((Ptr WeldJointDef -> IO JointId) -> IO JointId)
-> (Ptr WeldJointDef -> IO JointId) -> IO JointId
forall a b. (a -> b) -> a -> b
$ \Ptr WeldJointDef
p1 ->
  WorldId -> Ptr WeldJointDef -> IO JointId
c_b2CreateWeldJoint WorldId
a0 Ptr WeldJointDef
p1

{- | Set the weld joint linear stiffness in Hertz. 0 is rigid.

Binds @b2WeldJoint_SetLinearHertz@.
-}
setLinearHertz
  :: JointId
  -> Float
  -- ^ @hertz@
  -> IO ()
setLinearHertz :: JointId -> Float -> IO ()
setLinearHertz JointId
a0 Float
a1 =
  JointId -> Float -> IO ()
c_b2WeldJoint_SetLinearHertz JointId
a0 Float
a1

{- | Get the weld joint linear stiffness in Hertz

Binds @b2WeldJoint_GetLinearHertz@.
-}
getLinearHertz
  :: JointId
  -> IO Float
getLinearHertz :: JointId -> IO Float
getLinearHertz JointId
a0 =
  JointId -> IO Float
c_b2WeldJoint_GetLinearHertz JointId
a0

{- | Set the weld joint linear damping ratio (non-dimensional)

Binds @b2WeldJoint_SetLinearDampingRatio@.
-}
setLinearDampingRatio
  :: JointId
  -> Float
  -- ^ @dampingRatio@
  -> IO ()
setLinearDampingRatio :: JointId -> Float -> IO ()
setLinearDampingRatio JointId
a0 Float
a1 =
  JointId -> Float -> IO ()
c_b2WeldJoint_SetLinearDampingRatio JointId
a0 Float
a1

{- | Get the weld joint linear damping ratio (non-dimensional)

Binds @b2WeldJoint_GetLinearDampingRatio@.
-}
getLinearDampingRatio
  :: JointId
  -> IO Float
getLinearDampingRatio :: JointId -> IO Float
getLinearDampingRatio JointId
a0 =
  JointId -> IO Float
c_b2WeldJoint_GetLinearDampingRatio JointId
a0

{- | Set the weld joint angular stiffness in Hertz. 0 is rigid.

Binds @b2WeldJoint_SetAngularHertz@.
-}
setAngularHertz
  :: JointId
  -> Float
  -- ^ @hertz@
  -> IO ()
setAngularHertz :: JointId -> Float -> IO ()
setAngularHertz JointId
a0 Float
a1 =
  JointId -> Float -> IO ()
c_b2WeldJoint_SetAngularHertz JointId
a0 Float
a1

{- | Get the weld joint angular stiffness in Hertz

Binds @b2WeldJoint_GetAngularHertz@.
-}
getAngularHertz
  :: JointId
  -> IO Float
getAngularHertz :: JointId -> IO Float
getAngularHertz JointId
a0 =
  JointId -> IO Float
c_b2WeldJoint_GetAngularHertz JointId
a0

{- | Set weld joint angular damping ratio, non-dimensional

Binds @b2WeldJoint_SetAngularDampingRatio@.
-}
setAngularDampingRatio
  :: JointId
  -> Float
  -- ^ @dampingRatio@
  -> IO ()
setAngularDampingRatio :: JointId -> Float -> IO ()
setAngularDampingRatio JointId
a0 Float
a1 =
  JointId -> Float -> IO ()
c_b2WeldJoint_SetAngularDampingRatio JointId
a0 Float
a1

{- | Get the weld joint angular damping ratio, non-dimensional

Binds @b2WeldJoint_GetAngularDampingRatio@.
-}
getAngularDampingRatio
  :: JointId
  -> IO Float
getAngularDampingRatio :: JointId -> IO Float
getAngularDampingRatio JointId
a0 =
  JointId -> IO Float
c_b2WeldJoint_GetAngularDampingRatio JointId
a0