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

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

  where

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

foreign import ccall unsafe "b3CreateWeldJoint"
  c_b3CreateWeldJoint :: WorldId -> Ptr WeldJointDef -> IO JointId

foreign import ccall unsafe "b3WeldJoint_SetLinearHertz"
  c_b3WeldJoint_SetLinearHertz :: JointId -> Float -> IO ()

foreign import ccall unsafe "b3WeldJoint_GetLinearHertz"
  c_b3WeldJoint_GetLinearHertz :: JointId -> IO Float

foreign import ccall unsafe "b3WeldJoint_SetLinearDampingRatio"
  c_b3WeldJoint_SetLinearDampingRatio :: JointId -> Float -> IO ()

foreign import ccall unsafe "b3WeldJoint_GetLinearDampingRatio"
  c_b3WeldJoint_GetLinearDampingRatio :: JointId -> IO Float

foreign import ccall unsafe "b3WeldJoint_SetAngularHertz"
  c_b3WeldJoint_SetAngularHertz :: JointId -> Float -> IO ()

foreign import ccall unsafe "b3WeldJoint_GetAngularHertz"
  c_b3WeldJoint_GetAngularHertz :: JointId -> IO Float

foreign import ccall unsafe "b3WeldJoint_SetAngularDampingRatio"
  c_b3WeldJoint_SetAngularDampingRatio :: JointId -> Float -> IO ()

foreign import ccall unsafe "b3WeldJoint_GetAngularDampingRatio"
  c_b3WeldJoint_GetAngularDampingRatio :: JointId -> IO Float

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

Binds @b3CreateWeldJoint@.
-}
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_b3CreateWeldJoint WorldId
a0 Ptr WeldJointDef
p1

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

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

{- | Get the weld joint linear stiffness in Hertz

Binds @b3WeldJoint_GetLinearHertz@.
-}
getLinearHertz
  :: JointId
  -> IO Float
getLinearHertz :: JointId -> IO Float
getLinearHertz JointId
a0 =
  JointId -> IO Float
c_b3WeldJoint_GetLinearHertz JointId
a0

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

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

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

Binds @b3WeldJoint_GetLinearDampingRatio@.
-}
getLinearDampingRatio
  :: JointId
  -> IO Float
getLinearDampingRatio :: JointId -> IO Float
getLinearDampingRatio JointId
a0 =
  JointId -> IO Float
c_b3WeldJoint_GetLinearDampingRatio JointId
a0

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

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

{- | Get the weld joint angular stiffness in Hertz

Binds @b3WeldJoint_GetAngularHertz@.
-}
getAngularHertz
  :: JointId
  -> IO Float
getAngularHertz :: JointId -> IO Float
getAngularHertz JointId
a0 =
  JointId -> IO Float
c_b3WeldJoint_GetAngularHertz JointId
a0

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

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

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

Binds @b3WeldJoint_GetAngularDampingRatio@.
-}
getAngularDampingRatio
  :: JointId
  -> IO Float
getAngularDampingRatio :: JointId -> IO Float
getAngularDampingRatio JointId
a0 =
  JointId -> IO Float
c_b3WeldJoint_GetAngularDampingRatio JointId
a0