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

module Box3D.BoxMesh
  ( create
  )

  where

import Foreign
import Foreign.C.Types (CBool(..))
import Box3D.MathTypes (Vec3)
import Box3D.Tags (MeshData)

foreign import ccall unsafe "hsg_b3CreateBoxMesh"
  c_b3CreateBoxMesh :: Ptr Vec3 -> Ptr Vec3 -> CBool -> IO (Ptr MeshData)

{- | Create a box mesh.

Binds @b3CreateBoxMesh@.
-}
create
  :: Vec3
  -- ^ @center@
  -> Vec3
  -- ^ @extent@
  -> Bool
  -- ^ @identifyEdges@
  -> IO (Ptr MeshData)
create :: Vec3 -> Vec3 -> Bool -> IO (Ptr MeshData)
create Vec3
a0 Vec3
a1 Bool
a2 =
  Vec3 -> (Ptr Vec3 -> IO (Ptr MeshData)) -> IO (Ptr MeshData)
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Vec3
a0 ((Ptr Vec3 -> IO (Ptr MeshData)) -> IO (Ptr MeshData))
-> (Ptr Vec3 -> IO (Ptr MeshData)) -> IO (Ptr MeshData)
forall a b. (a -> b) -> a -> b
$ \Ptr Vec3
p0 ->
  Vec3 -> (Ptr Vec3 -> IO (Ptr MeshData)) -> IO (Ptr MeshData)
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Vec3
a1 ((Ptr Vec3 -> IO (Ptr MeshData)) -> IO (Ptr MeshData))
-> (Ptr Vec3 -> IO (Ptr MeshData)) -> IO (Ptr MeshData)
forall a b. (a -> b) -> a -> b
$ \Ptr Vec3
p1 ->
  Ptr Vec3 -> Ptr Vec3 -> CBool -> IO (Ptr MeshData)
c_b3CreateBoxMesh Ptr Vec3
p0 Ptr Vec3
p1 (Bool -> CBool
forall a. Num a => Bool -> a
fromBool Bool
a2)