Box3D
Safe HaskellNone
LanguageGHC2021

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

Documentation

class HasUserData id where Source #

Handles carrying a userData pointer slot.

Methods

setUserData :: id -> Ptr () -> IO () Source #

getUserData :: id -> IO (Ptr ()) Source #

Instances

Instances details
HasUserData BodyId Source # 
Instance details

Defined in Box3D.UserData

Methods

setUserData :: BodyId -> Ptr () -> IO () Source #

getUserData :: BodyId -> IO (Ptr ()) Source #

HasUserData JointId Source # 
Instance details

Defined in Box3D.UserData

Methods

setUserData :: JointId -> Ptr () -> IO () Source #

getUserData :: JointId -> IO (Ptr ()) Source #

HasUserData ShapeId Source # 
Instance details

Defined in Box3D.UserData

Methods

setUserData :: ShapeId -> Ptr () -> IO () Source #

getUserData :: ShapeId -> IO (Ptr ()) Source #

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.