module HGamer3D.Bindings.Ogre.ClassMaterial where
import Foreign
import Foreign.Ptr
import Foreign.C
import HGamer3D.Data.HG3DClass
import HGamer3D.Data.Vector
import HGamer3D.Data.Colour
import HGamer3D.Data.Angle
import HGamer3D.Bindings.Ogre.Utils
import HGamer3D.Bindings.Ogre.ClassPtr
import HGamer3D.Bindings.Ogre.StructHG3DClass
import HGamer3D.Bindings.Ogre.StructSharedPtr
import HGamer3D.Bindings.Ogre.StructColour
delete :: HG3DClass -> IO ()
delete a1 =
  withHG3DClass a1 $ \a1' -> 
  delete'_ a1' >>= \res ->
  return ()
isTransparent :: HG3DClass -> IO (Bool)
isTransparent a1 =
  withHG3DClass a1 $ \a1' -> 
  alloca $ \a2' -> 
  isTransparent'_ a1' a2' >>= \res ->
  peekBoolUtil  a2'>>= \a2'' -> 
  return (a2'')
setReceiveShadows :: HG3DClass -> Bool -> IO ()
setReceiveShadows a1 a2 =
  withHG3DClass a1 $ \a1' -> 
  let {a2' = fromBool a2} in 
  setReceiveShadows'_ a1' a2' >>= \res ->
  return ()
getReceiveShadows :: HG3DClass -> IO (Bool)
getReceiveShadows a1 =
  withHG3DClass a1 $ \a1' -> 
  alloca $ \a2' -> 
  getReceiveShadows'_ a1' a2' >>= \res ->
  peekBoolUtil  a2'>>= \a2'' -> 
  return (a2'')
setTransparencyCastsShadows :: HG3DClass -> Bool -> IO ()
setTransparencyCastsShadows a1 a2 =
  withHG3DClass a1 $ \a1' -> 
  let {a2' = fromBool a2} in 
  setTransparencyCastsShadows'_ a1' a2' >>= \res ->
  return ()
getTransparencyCastsShadows :: HG3DClass -> IO (Bool)
getTransparencyCastsShadows a1 =
  withHG3DClass a1 $ \a1' -> 
  alloca $ \a2' -> 
  getTransparencyCastsShadows'_ a1' a2' >>= \res ->
  peekBoolUtil  a2'>>= \a2'' -> 
  return (a2'')
getNumTechniques :: HG3DClass -> IO (Int)
getNumTechniques a1 =
  withHG3DClass a1 $ \a1' -> 
  alloca $ \a2' -> 
  getNumTechniques'_ a1' a2' >>= \res ->
  peekIntConv  a2'>>= \a2'' -> 
  return (a2'')
removeTechnique :: HG3DClass -> Int -> IO ()
removeTechnique a1 a2 =
  withHG3DClass a1 $ \a1' -> 
  let {a2' = fromIntegral a2} in 
  removeTechnique'_ a1' a2' >>= \res ->
  return ()
removeAllTechniques :: HG3DClass -> IO ()
removeAllTechniques a1 =
  withHG3DClass a1 $ \a1' -> 
  removeAllTechniques'_ a1' >>= \res ->
  return ()
getNumSupportedTechniques :: HG3DClass -> IO (Int)
getNumSupportedTechniques a1 =
  withHG3DClass a1 $ \a1' -> 
  alloca $ \a2' -> 
  getNumSupportedTechniques'_ a1' a2' >>= \res ->
  peekIntConv  a2'>>= \a2'' -> 
  return (a2'')
getUnsupportedTechniquesExplanation :: HG3DClass -> IO (String)
getUnsupportedTechniquesExplanation a1 =
  withHG3DClass a1 $ \a1' -> 
  alloc64k $ \a2' -> 
  getUnsupportedTechniquesExplanation'_ a1' a2' >>= \res ->
  peekCString  a2'>>= \a2'' -> 
  return (a2'')
getNumLodLevels :: HG3DClass -> Int -> IO (Int)
getNumLodLevels a1 a2 =
  withHG3DClass a1 $ \a1' -> 
  let {a2' = fromIntegral a2} in 
  alloca $ \a3' -> 
  getNumLodLevels'_ a1' a2' a3' >>= \res ->
  peekIntConv  a3'>>= \a3'' -> 
  return (a3'')
getNumLodLevels2 :: HG3DClass -> String -> IO (Int)
getNumLodLevels2 a1 a2 =
  withHG3DClass a1 $ \a1' -> 
  withCString a2 $ \a2' -> 
  alloca $ \a3' -> 
  getNumLodLevels2'_ a1' a2' a3' >>= \res ->
  peekIntConv  a3'>>= \a3'' -> 
  return (a3'')
clone :: HG3DClass -> String -> Bool -> String -> IO (SharedPtr)
clone a1 a2 a3 a4 =
  withHG3DClass a1 $ \a1' -> 
  withCString a2 $ \a2' -> 
  let {a3' = fromBool a3} in 
  withCString a4 $ \a4' -> 
  alloca $ \a5' -> 
  clone'_ a1' a2' a3' a4' a5' >>= \res ->
  peekSharedPtr  a5'>>= \a5'' -> 
  return (a5'')
copyDetailsTo :: HG3DClass -> IO (SharedPtr)
copyDetailsTo a1 =
  withHG3DClass a1 $ \a1' -> 
  alloca $ \a2' -> 
  copyDetailsTo'_ a1' a2' >>= \res ->
  peekSharedPtr  a2'>>= \a2'' -> 
  return (a2'')
compile :: HG3DClass -> Bool -> IO ()
compile a1 a2 =
  withHG3DClass a1 $ \a1' -> 
  let {a2' = fromBool a2} in 
  compile'_ a1' a2' >>= \res ->
  return ()
setPointSize :: HG3DClass -> Float -> IO ()
setPointSize a1 a2 =
  withHG3DClass a1 $ \a1' -> 
  let {a2' = realToFrac a2} in 
  setPointSize'_ a1' a2' >>= \res ->
  return ()
setAmbient :: HG3DClass -> Float -> Float -> Float -> IO ()
setAmbient a1 a2 a3 a4 =
  withHG3DClass a1 $ \a1' -> 
  let {a2' = realToFrac a2} in 
  let {a3' = realToFrac a3} in 
  let {a4' = realToFrac a4} in 
  setAmbient'_ a1' a2' a3' a4' >>= \res ->
  return ()
setAmbient2 :: HG3DClass -> Colour -> IO ()
setAmbient2 a1 a2 =
  withHG3DClass a1 $ \a1' -> 
  withColour a2 $ \a2' -> 
  setAmbient2'_ a1' a2' >>= \res ->
  return ()
setDiffuse :: HG3DClass -> Float -> Float -> Float -> Float -> IO ()
setDiffuse a1 a2 a3 a4 a5 =
  withHG3DClass a1 $ \a1' -> 
  let {a2' = realToFrac a2} in 
  let {a3' = realToFrac a3} in 
  let {a4' = realToFrac a4} in 
  let {a5' = realToFrac a5} in 
  setDiffuse'_ a1' a2' a3' a4' a5' >>= \res ->
  return ()
setDiffuse2 :: HG3DClass -> Colour -> IO ()
setDiffuse2 a1 a2 =
  withHG3DClass a1 $ \a1' -> 
  withColour a2 $ \a2' -> 
  setDiffuse2'_ a1' a2' >>= \res ->
  return ()
setSpecular :: HG3DClass -> Float -> Float -> Float -> Float -> IO ()
setSpecular a1 a2 a3 a4 a5 =
  withHG3DClass a1 $ \a1' -> 
  let {a2' = realToFrac a2} in 
  let {a3' = realToFrac a3} in 
  let {a4' = realToFrac a4} in 
  let {a5' = realToFrac a5} in 
  setSpecular'_ a1' a2' a3' a4' a5' >>= \res ->
  return ()
setSpecular2 :: HG3DClass -> Colour -> IO ()
setSpecular2 a1 a2 =
  withHG3DClass a1 $ \a1' -> 
  withColour a2 $ \a2' -> 
  setSpecular2'_ a1' a2' >>= \res ->
  return ()
setShininess :: HG3DClass -> Float -> IO ()
setShininess a1 a2 =
  withHG3DClass a1 $ \a1' -> 
  let {a2' = realToFrac a2} in 
  setShininess'_ a1' a2' >>= \res ->
  return ()
setSelfIllumination :: HG3DClass -> Float -> Float -> Float -> IO ()
setSelfIllumination a1 a2 a3 a4 =
  withHG3DClass a1 $ \a1' -> 
  let {a2' = realToFrac a2} in 
  let {a3' = realToFrac a3} in 
  let {a4' = realToFrac a4} in 
  setSelfIllumination'_ a1' a2' a3' a4' >>= \res ->
  return ()
setSelfIllumination2 :: HG3DClass -> Colour -> IO ()
setSelfIllumination2 a1 a2 =
  withHG3DClass a1 $ \a1' -> 
  withColour a2 $ \a2' -> 
  setSelfIllumination2'_ a1' a2' >>= \res ->
  return ()
setDepthCheckEnabled :: HG3DClass -> Bool -> IO ()
setDepthCheckEnabled a1 a2 =
  withHG3DClass a1 $ \a1' -> 
  let {a2' = fromBool a2} in 
  setDepthCheckEnabled'_ a1' a2' >>= \res ->
  return ()
setDepthWriteEnabled :: HG3DClass -> Bool -> IO ()
setDepthWriteEnabled a1 a2 =
  withHG3DClass a1 $ \a1' -> 
  let {a2' = fromBool a2} in 
  setDepthWriteEnabled'_ a1' a2' >>= \res ->
  return ()
setColourWriteEnabled :: HG3DClass -> Bool -> IO ()
setColourWriteEnabled a1 a2 =
  withHG3DClass a1 $ \a1' -> 
  let {a2' = fromBool a2} in 
  setColourWriteEnabled'_ a1' a2' >>= \res ->
  return ()
setLightingEnabled :: HG3DClass -> Bool -> IO ()
setLightingEnabled a1 a2 =
  withHG3DClass a1 $ \a1' -> 
  let {a2' = fromBool a2} in 
  setLightingEnabled'_ a1' a2' >>= \res ->
  return ()
setDepthBias :: HG3DClass -> Float -> Float -> IO ()
setDepthBias a1 a2 a3 =
  withHG3DClass a1 $ \a1' -> 
  let {a2' = realToFrac a2} in 
  let {a3' = realToFrac a3} in 
  setDepthBias'_ a1' a2' a3' >>= \res ->
  return ()
setTextureAnisotropy :: HG3DClass -> Int -> IO ()
setTextureAnisotropy a1 a2 =
  withHG3DClass a1 $ \a1' -> 
  let {a2' = fromIntegral a2} in 
  setTextureAnisotropy'_ a1' a2' >>= \res ->
  return ()
touch :: HG3DClass -> IO ()
touch a1 =
  withHG3DClass a1 $ \a1' -> 
  touch'_ a1' >>= \res ->
  return ()
getCompilationRequired :: HG3DClass -> IO (Bool)
getCompilationRequired a1 =
  withHG3DClass a1 $ \a1' -> 
  alloca $ \a2' -> 
  getCompilationRequired'_ a1' a2' >>= \res ->
  peekBoolUtil  a2'>>= \a2'' -> 
  return (a2'')
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_destruct"
  delete'_ :: ((HG3DClassPtr) -> (IO ()))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_isTransparent"
  isTransparent'_ :: ((HG3DClassPtr) -> ((Ptr CInt) -> (IO ())))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_setReceiveShadows"
  setReceiveShadows'_ :: ((HG3DClassPtr) -> (CInt -> (IO ())))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_getReceiveShadows"
  getReceiveShadows'_ :: ((HG3DClassPtr) -> ((Ptr CInt) -> (IO ())))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_setTransparencyCastsShadows"
  setTransparencyCastsShadows'_ :: ((HG3DClassPtr) -> (CInt -> (IO ())))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_getTransparencyCastsShadows"
  getTransparencyCastsShadows'_ :: ((HG3DClassPtr) -> ((Ptr CInt) -> (IO ())))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_getNumTechniques"
  getNumTechniques'_ :: ((HG3DClassPtr) -> ((Ptr CUShort) -> (IO ())))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_removeTechnique"
  removeTechnique'_ :: ((HG3DClassPtr) -> (CUShort -> (IO ())))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_removeAllTechniques"
  removeAllTechniques'_ :: ((HG3DClassPtr) -> (IO ()))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_getNumSupportedTechniques"
  getNumSupportedTechniques'_ :: ((HG3DClassPtr) -> ((Ptr CUShort) -> (IO ())))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_getUnsupportedTechniquesExplanation"
  getUnsupportedTechniquesExplanation'_ :: ((HG3DClassPtr) -> ((Ptr CChar) -> (IO ())))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_getNumLodLevels"
  getNumLodLevels'_ :: ((HG3DClassPtr) -> (CUShort -> ((Ptr CUShort) -> (IO ()))))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_getNumLodLevels2"
  getNumLodLevels2'_ :: ((HG3DClassPtr) -> ((Ptr CChar) -> ((Ptr CUShort) -> (IO ()))))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_clone"
  clone'_ :: ((HG3DClassPtr) -> ((Ptr CChar) -> (CInt -> ((Ptr CChar) -> ((SharedPtrPtr) -> (IO ()))))))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_copyDetailsTo"
  copyDetailsTo'_ :: ((HG3DClassPtr) -> ((SharedPtrPtr) -> (IO ())))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_compile"
  compile'_ :: ((HG3DClassPtr) -> (CInt -> (IO ())))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_setPointSize"
  setPointSize'_ :: ((HG3DClassPtr) -> (CFloat -> (IO ())))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_setAmbient"
  setAmbient'_ :: ((HG3DClassPtr) -> (CFloat -> (CFloat -> (CFloat -> (IO ())))))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_setAmbient2"
  setAmbient2'_ :: ((HG3DClassPtr) -> ((ColourPtr) -> (IO ())))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_setDiffuse"
  setDiffuse'_ :: ((HG3DClassPtr) -> (CFloat -> (CFloat -> (CFloat -> (CFloat -> (IO ()))))))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_setDiffuse2"
  setDiffuse2'_ :: ((HG3DClassPtr) -> ((ColourPtr) -> (IO ())))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_setSpecular"
  setSpecular'_ :: ((HG3DClassPtr) -> (CFloat -> (CFloat -> (CFloat -> (CFloat -> (IO ()))))))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_setSpecular2"
  setSpecular2'_ :: ((HG3DClassPtr) -> ((ColourPtr) -> (IO ())))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_setShininess"
  setShininess'_ :: ((HG3DClassPtr) -> (CFloat -> (IO ())))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_setSelfIllumination"
  setSelfIllumination'_ :: ((HG3DClassPtr) -> (CFloat -> (CFloat -> (CFloat -> (IO ())))))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_setSelfIllumination2"
  setSelfIllumination2'_ :: ((HG3DClassPtr) -> ((ColourPtr) -> (IO ())))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_setDepthCheckEnabled"
  setDepthCheckEnabled'_ :: ((HG3DClassPtr) -> (CInt -> (IO ())))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_setDepthWriteEnabled"
  setDepthWriteEnabled'_ :: ((HG3DClassPtr) -> (CInt -> (IO ())))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_setColourWriteEnabled"
  setColourWriteEnabled'_ :: ((HG3DClassPtr) -> (CInt -> (IO ())))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_setLightingEnabled"
  setLightingEnabled'_ :: ((HG3DClassPtr) -> (CInt -> (IO ())))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_setDepthBias"
  setDepthBias'_ :: ((HG3DClassPtr) -> (CFloat -> (CFloat -> (IO ()))))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_setTextureAnisotropy"
  setTextureAnisotropy'_ :: ((HG3DClassPtr) -> (CInt -> (IO ())))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_touch"
  touch'_ :: ((HG3DClassPtr) -> (IO ()))
foreign import ccall safe "HGamer3D\\Bindings\\Ogre\\ClassMaterial.chs.h ogre_mtrl_getCompilationRequired"
  getCompilationRequired'_ :: ((HG3DClassPtr) -> ((Ptr CInt) -> (IO ())))