module SFML.Audio.Listener
(
setGlobalVolume
, getGlobalVolume
, setListenerPosition
, getListenerPosition
, setListenerDirection
, getListenerDirection
, setListenerUpVector
, getListenerUpVector
)
where
import SFML.System.Vector3
import Control.Monad ((>=>))
import Foreign.C.Types
import Foreign.Marshal.Alloc (alloca)
import Foreign.Marshal.Utils (with)
import Foreign.Ptr (Ptr)
import Foreign.Storable (peek)
setGlobalVolume
:: Float
-> IO ()
setGlobalVolume = sfListener_setGlobalVolume . realToFrac
foreign import ccall unsafe "sfListener_setGlobalVolume"
sfListener_setGlobalVolume :: CFloat -> IO ()
getGlobalVolume :: IO Float
getGlobalVolume = fmap realToFrac sfListener_getGlobalVolume
foreign import ccall unsafe "sfListener_getGlobalVolume"
sfListener_getGlobalVolume :: IO CFloat
setListenerPosition :: Vec3f -> IO ()
setListenerPosition pos = with pos sfListener_setPosition_helper
foreign import ccall unsafe "sfListener_setPosition_helper"
sfListener_setPosition_helper :: Ptr Vec3f -> IO ()
getListenerPosition :: IO Vec3f
getListenerPosition = alloca $ \ptr -> sfListener_getPosition_helper ptr >> peek ptr
foreign import ccall unsafe "sfListener_getPosition_helper"
sfListener_getPosition_helper :: Ptr Vec3f -> IO ()
setListenerDirection :: Vec3f -> IO ()
setListenerDirection dir = with dir sfListener_setDirection_helper
foreign import ccall unsafe "sfListener_setDirection_helper"
sfListener_setDirection_helper :: Ptr Vec3f -> IO ()
getListenerDirection :: IO Vec3f
getListenerDirection = alloca $ \ptr -> sfListener_getDirection_helper ptr >> peek ptr
foreign import ccall unsafe "sfListener_getDirection_helper"
sfListener_getDirection_helper :: Ptr Vec3f -> IO ()
setListenerUpVector :: Vec3f -> IO ()
setListenerUpVector dir = with dir sfListener_setUpVector_helper
foreign import ccall unsafe "sfListener_setUpVector_helper"
sfListener_setUpVector_helper :: Ptr Vec3f -> IO ()
getListenerUpVector :: IO Vec3f
getListenerUpVector = alloca $ \ptr -> sfListener_getUpVector_helper ptr >> peek ptr
foreign import ccall unsafe "sfListener_getUpVector_helper"
sfListener_getUpVector_helper :: Ptr Vec3f -> IO ()