| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
Box3D.UserData
Description
Integer-friendly user data: stash an entity/index id in the engine's
void* userData slots without manual pointer casts. The id travels as the
pointer's bit pattern (it is never dereferenced), so any Int that fits a
word round-trips — which makes contact events and queries resolvable back
to your entities.
Synopsis
- class HasUserData id where
- setUserData :: id -> Ptr () -> IO ()
- getUserData :: id -> IO (Ptr ())
- setUserIndex :: HasUserData id => id -> Int -> IO ()
- getUserIndex :: HasUserData id => id -> IO Int
- userIndexToPtr :: Int -> Ptr ()
- ptrToUserIndex :: Ptr () -> Int
Documentation
class HasUserData id where Source #
Handles carrying a userData pointer slot.
Instances
| HasUserData BodyId Source # | |
Defined in Box3D.UserData | |
| HasUserData JointId Source # | |
Defined in Box3D.UserData | |
| HasUserData ShapeId Source # | |
Defined in Box3D.UserData | |
setUserIndex :: HasUserData id => id -> Int -> IO () Source #
Stash an entity/index id on a body, shape or joint.
getUserIndex :: HasUserData id => id -> IO Int Source #
Read back an id stored with setUserIndex.
userIndexToPtr :: Int -> Ptr () Source #
Encode an id as a user-data pointer (also for the *Def records'
userData fields).
ptrToUserIndex :: Ptr () -> Int Source #
Decode a user-data pointer written by userIndexToPtr.