-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Binding to libODE -- -- ODE is an open source, high performance library for simulating rigid -- body dynamics. It has advanced joint types and integrated collision -- detection with friction. ODE is useful for simulating vehicles, -- objects in virtual reality environments and virtual creatures. It is -- currently used in many computer games, 3D authoring tools and -- simulation tools. See http:www.ode.org/ @package HODE @version 2008.10.27 module Physics.ODE.Types type ODEreal = Float type Matrix3 = Ptr ODEreal type Quaternion = (ODEreal, ODEreal, ODEreal, ODEreal) data WorldStruct type World = Ptr WorldStruct data SpaceStruct type Space = Ptr SpaceStruct data BodyStruct type Body = Ptr BodyStruct data GeomStruct type Geom = Ptr GeomStruct data JointStruct type Joint = Ptr JointStruct data JointGroupStruct type JointGroup = Ptr JointGroupStruct data MassStruct type Mass = ForeignPtr MassStruct data ContactGeom ContactGeom :: (ODEreal, ODEreal, ODEreal) -> (ODEreal, ODEreal, ODEreal) -> ODEreal -> (Geom, Geom) -> ContactGeom contactPos :: ContactGeom -> (ODEreal, ODEreal, ODEreal) contactNormal :: ContactGeom -> (ODEreal, ODEreal, ODEreal) contactDepth :: ContactGeom -> ODEreal contactObjects :: ContactGeom -> (Geom, Geom) data ContactInfo ContactInfo :: Surface -> ContactGeom -> (ODEreal, ODEreal, ODEreal) -> ContactInfo contactSurface :: ContactInfo -> Surface contactGeom :: ContactInfo -> ContactGeom contactFDir1 :: ContactInfo -> (ODEreal, ODEreal, ODEreal) data Surface Surface :: ODEreal -> Maybe ODEreal -> Maybe (ODEreal, ODEreal) -> Maybe ODEreal -> Maybe ODEreal -> Maybe ODEreal -> Maybe ODEreal -> Maybe ODEreal -> Maybe ODEreal -> Surface surfaceMu :: Surface -> ODEreal surfaceMu2 :: Surface -> Maybe ODEreal surfaceBounce :: Surface -> Maybe (ODEreal, ODEreal) surfaceSoftERP :: Surface -> Maybe ODEreal surfaceSoftCFM :: Surface -> Maybe ODEreal surfaceMotion1 :: Surface -> Maybe ODEreal surfaceMotion2 :: Surface -> Maybe ODEreal surfaceSlip1 :: Surface -> Maybe ODEreal surfaceSlip2 :: Surface -> Maybe ODEreal data SurfaceMode HaveMu2 :: SurfaceMode HaveFDir1 :: SurfaceMode HaveBounce :: SurfaceMode HaveSoftERP :: SurfaceMode HaveSoftCFM :: SurfaceMode HaveMotion1 :: SurfaceMode HaveMotion2 :: SurfaceMode HaveSlip1 :: SurfaceMode HaveSlip2 :: SurfaceMode HaveApprox11 :: SurfaceMode HaveApprox12 :: SurfaceMode data JointType Ball :: JointType Hinge :: JointType Slider :: JointType Contact :: JointType Universal :: JointType Hinge2 :: JointType Fixed :: JointType AMotor :: JointType data BodyIndex First :: BodyIndex Second :: BodyIndex data GeomClass Sphere :: GeomClass Box :: GeomClass CappedCylinder :: GeomClass Cylinder :: GeomClass Plane :: GeomClass GeomTransform :: GeomClass Ray :: GeomClass TriangleMesh :: GeomClass SimpleSpace :: GeomClass HashSpace :: GeomClass data RotationMode Infinitesimal :: RotationMode Finite :: ODEreal -> ODEreal -> ODEreal -> RotationMode instance Show RotationMode instance Eq RotationMode instance Ord RotationMode instance Show GeomClass instance Eq GeomClass instance Ord GeomClass instance Show BodyIndex instance Eq BodyIndex instance Ord BodyIndex instance Show JointType instance Eq JointType instance Ord JointType instance Show SurfaceMode instance Eq SurfaceMode instance Enum SurfaceMode instance Bounded SurfaceMode instance Show Surface instance Eq Surface instance Show ContactInfo instance Show ContactGeom module Physics.ODE.Mass create :: IO Mass destroyMass :: Mass -> IO () mass :: Mass -> IO ODEreal setZero :: Mass -> IO () adjust :: Mass -> ODEreal -> IO () module Physics.ODE.World create :: IO World destroyWorld :: World -> IO () setGravity :: World -> ODEreal -> ODEreal -> ODEreal -> IO () getGravity :: World -> IO ((ODEreal, ODEreal, ODEreal)) closeODE :: IO () step :: World -> ODEreal -> IO () quickStep :: World -> ODEreal -> IO () setContactSurfaceLayer :: World -> ODEreal -> IO () getContactSurfaceLayer :: World -> IO ODEreal module Physics.ODE.Body create :: World -> IO Body destroyBody :: Body -> IO () setBodyPosition :: Body -> ODEreal -> ODEreal -> ODEreal -> IO () getBodyPosition :: Body -> IO ((ODEreal, ODEreal, ODEreal)) setBodyQuaternion :: Body -> (ODEreal, ODEreal, ODEreal, ODEreal) -> IO () getBodyQuaternion :: Body -> IO ((ODEreal, ODEreal, ODEreal, ODEreal)) setBodyRotation :: Body -> Matrix3 -> IO () getBodyRotation :: Body -> IO Matrix3 setLinearVel :: Body -> ODEreal -> ODEreal -> ODEreal -> IO () getLinearVel :: Body -> IO ((ODEreal, ODEreal, ODEreal)) setAngularVel :: Body -> ODEreal -> ODEreal -> ODEreal -> IO () getAngularVel :: Body -> IO ((ODEreal, ODEreal, ODEreal)) setMass :: Body -> Mass -> IO () getMass :: Body -> IO Mass addForce :: Body -> ODEreal -> ODEreal -> ODEreal -> IO () setForce :: Body -> ODEreal -> ODEreal -> ODEreal -> IO () getForce :: Body -> IO ((ODEreal, ODEreal, ODEreal)) addTorque :: Body -> ODEreal -> ODEreal -> ODEreal -> IO () setTorque :: Body -> ODEreal -> ODEreal -> ODEreal -> IO () getTorque :: Body -> IO ((ODEreal, ODEreal, ODEreal)) enableBody :: Body -> IO () disableBody :: Body -> IO () isBodyEnabled :: Body -> IO Bool setRawBodyData :: Ptr BodyStruct -> Ptr a -> IO () setBodyData :: Body -> a -> IO () setSafeBodyData :: Typeable a => Body -> a -> IO () getRawBodyData :: Ptr BodyStruct -> IO (Ptr a) getBodyData :: Body -> IO a tryGetSafeBodyData :: Typeable a => Body -> IO (Maybe a) getSafeBodyData :: Typeable a => Body -> IO a setFiniteRotationMode :: Body -> RotationMode -> IO () getFiniteRotationMode :: Body -> IO RotationMode getNumJoints :: Body -> IO Int getJoint :: Body -> Int -> IO Joint setGravityMode :: Body -> Bool -> IO () getGravityMode :: Body -> IO Bool module Physics.ODE.Joint createBall :: World -> Maybe JointGroup -> IO Joint createHinge :: World -> Maybe JointGroup -> IO Joint createSlider :: World -> Maybe JointGroup -> IO Joint createContact :: World -> Maybe JointGroup -> ContactInfo -> IO Joint createGroup :: IO JointGroup destroyJoint :: Joint -> IO () destroyGroup :: JointGroup -> IO () emptyGroup :: JointGroup -> IO () attach :: Joint -> Maybe Body -> Maybe Body -> IO () setRawJointData :: Ptr JointStruct -> Ptr a -> IO () setJointData :: Joint -> a -> IO () setSafeJointData :: Typeable a => Joint -> a -> IO () getRawJointData :: Ptr JointStruct -> IO (Ptr a) getJointData :: Joint -> IO a getSafeJointData :: Typeable a => Joint -> IO a tryGetSafeJointData :: Typeable a => Joint -> IO (Maybe a) getType :: Joint -> IO JointType getBody :: Joint -> BodyIndex -> IO Body areConnected :: Body -> Body -> IO Bool areConnectedExcluding :: Body -> Body -> JointType -> IO Bool setBallAnchor :: Joint -> ODEreal -> ODEreal -> ODEreal -> IO () getBallAnchor :: Joint -> IO ((ODEreal, ODEreal, ODEreal)) setHingeAnchor :: Joint -> ODEreal -> ODEreal -> ODEreal -> IO () setHingeAxis :: Joint -> ODEreal -> ODEreal -> ODEreal -> IO () module Physics.ODE.Geom destroyGeom :: Geom -> IO () setRawGeomData :: Ptr GeomStruct -> Ptr a -> IO () setGeomData :: Geom -> a -> IO () setSafeGeomData :: Typeable a => Geom -> a -> IO () getRawGeomData :: Ptr GeomStruct -> IO (Ptr a) getGeomData :: Geom -> IO a getSafeGeomData :: Typeable a => Geom -> IO a tryGetSafeGeomData :: Typeable a => Geom -> IO (Maybe a) setBody :: Geom -> Maybe Body -> IO () getBodyUnsafe :: Geom -> IO Body getBody :: Geom -> IO (Maybe Body) setGeomPosition :: Geom -> ODEreal -> ODEreal -> ODEreal -> IO () getGeomPosition :: Geom -> IO ((ODEreal, ODEreal, ODEreal)) setGeomQuaternion :: Geom -> (ODEreal, ODEreal, ODEreal, ODEreal) -> IO () getGeomQuaternion :: Geom -> IO ((ODEreal, ODEreal, ODEreal, ODEreal)) setGeomRotation :: Geom -> Matrix3 -> IO () getGeomRotation :: Geom -> IO Matrix3 isSpace :: Geom -> IO Bool getSpace :: Geom -> IO (Maybe Space) getClass :: Geom -> IO GeomClass enableGeom :: Geom -> IO () disableGeom :: Geom -> IO () isGeomEnabled :: Geom -> IO Bool module Physics.ODE.Space createSimple :: Maybe Space -> IO Space createHash :: Maybe Space -> IO Space destroySpace :: Space -> IO () setLevels :: Space -> Int -> Int -> IO () getLevels :: Space -> IO ((Int, Int)) setCleanup :: Space -> Bool -> IO () getCleanup :: Space -> IO Bool add :: Space -> Geom -> IO () remove :: Space -> Geom -> IO () query :: Space -> Geom -> IO Bool getNumGeoms :: Space -> IO Int getGeomUnsafe :: Space -> Int -> IO Geom tryGetGeom :: Space -> Int -> IO (Maybe Geom) getGeom :: Space -> Int -> IO Geom module Physics.ODE.Objects createSphere :: Maybe Space -> ODEreal -> IO Geom sphereSetRadius :: Geom -> ODEreal -> IO () sphereGetRadius :: Geom -> IO ODEreal spherePointDepth :: Geom -> ODEreal -> ODEreal -> ODEreal -> IO ODEreal createBox :: Maybe Space -> ODEreal -> ODEreal -> ODEreal -> IO Geom boxSetLengths :: Geom -> ODEreal -> ODEreal -> ODEreal -> IO () boxGetLengths :: Geom -> IO ((ODEreal, ODEreal, ODEreal)) boxPointDepth :: Geom -> ODEreal -> ODEreal -> ODEreal -> IO ODEreal createPlane :: Maybe Space -> ODEreal -> ODEreal -> ODEreal -> ODEreal -> IO Geom planeSetParams :: Geom -> ODEreal -> ODEreal -> ODEreal -> ODEreal -> IO () planeGetParams :: Geom -> IO ((ODEreal, ODEreal, ODEreal, ODEreal)) planePointDepth :: Geom -> ODEreal -> ODEreal -> ODEreal -> IO ODEreal module Physics.ODE.Collision collide :: Geom -> Geom -> Int -> IO [ContactInfo] spaceCollide :: Space -> Callback -> IO () module Physics.ODE.Rotation createMatrix3 :: IO Matrix3 setIdentity :: Matrix3 -> IO () fromAxisAndAngle :: Matrix3 -> ODEreal -> ODEreal -> ODEreal -> ODEreal -> IO () fromEulerAngles :: Matrix3 -> ODEreal -> ODEreal -> ODEreal -> IO () peekMatrix3 :: Matrix3 -> IO [ODEreal] module Physics.ODE.Overloading class HasDestroy a destroy :: HasDestroy a => a -> IO () class IsPlaceable a getPosition :: IsPlaceable a => a -> IO (ODEreal, ODEreal, ODEreal) setPosition :: IsPlaceable a => a -> ODEreal -> ODEreal -> ODEreal -> IO () getQuaternion :: IsPlaceable a => a -> IO (ODEreal, ODEreal, ODEreal, ODEreal) setQuaternion :: IsPlaceable a => a -> (ODEreal, ODEreal, ODEreal, ODEreal) -> IO () getRotation :: IsPlaceable a => a -> IO Matrix3 setRotation :: IsPlaceable a => a -> Matrix3 -> IO () class HasData a setRawData :: HasData a => a -> Ptr b -> IO () setData :: HasData a => a -> b -> IO () setSafeData :: (HasData a, Typeable b) => a -> b -> IO () getRawData :: HasData a => a -> IO (Ptr b) getData :: HasData a => a -> IO b getSafeData :: (HasData a, Typeable b) => a -> IO b tryGetSafeData :: (HasData a, Typeable b) => a -> IO (Maybe b) class HasEnable a enable :: HasEnable a => a -> IO () disable :: HasEnable a => a -> IO () isEnabled :: HasEnable a => a -> IO Bool module Physics.ODE instance HasEnable Geom instance HasEnable Body instance HasData Joint instance HasData Geom instance HasData Body instance IsPlaceable Geom instance IsPlaceable Body instance HasDestroy Mass instance HasDestroy JointGroup instance HasDestroy Joint instance HasDestroy Body instance HasDestroy Space instance HasDestroy Geom instance HasDestroy World