cpSpace

Basic Unit of Simulation in Chipmunk

struct cpSpace {
cpTimestamp stamp;
cpTimestamp stamp;
cpFloat curr_dt;
cpFloat curr_dt;
cpArray* bodies;
cpArray* bodies;
cpArray* rousedBodies;
cpArray* rousedBodies;
cpArray* sleepingComponents;
cpArray* sleepingComponents;
cpSpatialIndex* staticShapes;
cpSpatialIndex* staticShapes;
cpSpatialIndex* activeShapes;
cpSpatialIndex* activeShapes;
cpArray* arbiters;
cpArray* arbiters;
cpContactBufferHeader* contactBuffersHead;
cpContactBufferHeader* contactBuffersHead;
cpHashSet* cachedArbiters;
cpHashSet* cachedArbiters;
cpArray* pooledArbiters;
cpArray* pooledArbiters;
cpArray* constraints;
cpArray* constraints;
cpArray* allocatedBuffers;
cpArray* allocatedBuffers;
int locked;
int locked;
cpHashSet* collisionHandlers;
cpHashSet* collisionHandlers;
cpCollisionHandler defaultHandler;
cpCollisionHandler defaultHandler;
cpBool skipPostStep;
cpBool skipPostStep;
cpArray* postStepCallbacks;
cpArray* postStepCallbacks;
cpBody _staticBody;
cpBody _staticBody;
}

Members

Variables

collisionBias
cpFloat collisionBias;

Determines how fast overlapping shapes are pushed apart. Expressed as a fraction of the error remaining after each second. Defaults to pow(1.0 - 0.1, 60.0) meaning that Chipmunk fixes 10% of overlap each frame at 60Hz.

collisionPersistence
cpTimestamp collisionPersistence;

Number of frames that contact information should persist. Defaults to 3. There is probably never a reason to change this value.

collisionSlop
cpFloat collisionSlop;

Amount of encouraged penetration between colliding shapes. Used to reduce oscillating contacts and keep the collision cache warm. Defaults to 0.1. If you have poor simulation quality, increase this number as much as possible without allowing visible amounts of overlap.

damping
cpFloat damping;

Damping rate expressed as the fraction of velocity bodies retain each second. A value of 0.9 would mean that each body_'s velocity will drop 10% per second. The default value is 1.0, meaning no damping is applied. @note This damping value is different than those of cpDampedSpring and cpDampedRotarySpring.

data
cpDataPointer data;

User definable data pointer. Generally this points to your game's controller or game state class so you can access it when given a cpSpace reference in a callback.

enableContactGraph
cpBool enableContactGraph;

Rebuild the contact graph during each step. Must be enabled to use the cpBodyEachArbiter() function. Disabled by default for a small performance boost. Enabled implicitly when the sleeping feature is enabled.

gravity
cpVect gravity;

Gravity to pass to rigid bodies when integrating velocity.

idleSpeedThreshold
cpFloat idleSpeedThreshold;

Speed threshold for a body_ to be considered idle. The default value of 0 means to let the space guess a good threshold based on gravity.

iterations
int iterations;

Number of iterations to use in the impulse solver to solve contacts.

sleepTimeThreshold
cpFloat sleepTimeThreshold;

Time a group of bodies must remain idle in order to fall asleep. Enabling sleeping also implicitly enables the the contact graph. The default value of INFINITY disables the sleeping algorithm.

staticBody
cpBody* staticBody;

The designated static body_ for this space. You can modify this body_, or replace it with your own static body_. By default it points to a statically allocated cpBody in the cpSpace struct.

Meta