00001
00007 struct cpSpace;
00008
00009 @interface ChipmunkSpace : NSObject {
00010 @protected
00011 struct cpSpace *_space;
00012 ChipmunkBody *_staticBody;
00013
00014 NSMutableSet *_children;
00015 NSMutableArray *_handlers;
00016
00017 id _data;
00018 }
00019
00024 @property int iterations;
00025
00027 @property cpVect gravity;
00028
00034 @property cpFloat damping;
00035
00037 @property cpFloat idleSpeedThreshold;
00038
00043 @property cpFloat sleepTimeThreshold;
00044
00045
00046
00047
00048
00049
00050
00051 @property cpFloat collisionSlop;
00052
00053
00054
00055
00056
00057
00058 @property cpFloat collisionBias;
00059
00060
00061
00062
00063
00064 @property cpTimestamp collisionPersistence;
00065
00066
00067
00068
00069
00070 @property bool enableContactGraph;
00071
00073 @property (readonly) cpSpace *space;
00074
00079 @property (readonly) ChipmunkBody *staticBody;
00080
00084 @property (readonly) cpFloat currentTimeStep;
00085
00090 @property (assign) id data;
00091
00094 +(ChipmunkSpace *)spaceFromCPSpace:(cpSpace *)space;
00095
00108 - (void)setDefaultCollisionHandler:(id)delegate
00109 begin:(SEL)begin
00110 preSolve:(SEL)preSolve
00111 postSolve:(SEL)postSolve
00112 separate:(SEL)separate;
00113
00129 - (void)addCollisionHandler:(id)delegate
00130 typeA:(id)a typeB:(id)b
00131 begin:(SEL)begin
00132 preSolve:(SEL)preSolve
00133 postSolve:(SEL)postSolve
00134 separate:(SEL)separate;
00135
00136
00138 - (void)removeCollisionHandlerForTypeA:(id)a andB:(id)b;
00139
00146 - (id)add:(NSObject<ChipmunkObject> *)obj;
00147
00154 - (id)remove:(NSObject<ChipmunkObject> *)obj;
00155
00157 -(BOOL)contains:(id <ChipmunkObject>)obj;
00158
00160 - (NSObject<ChipmunkObject> *)smartAdd:(NSObject<ChipmunkObject> *)obj;
00161
00163 - (NSObject<ChipmunkObject> *)smartRemove:(NSObject<ChipmunkObject> *)obj;
00164
00165
00186 - (void)addPostStepCallback:(id)target selector:(SEL)selector key:(id)key;
00187
00189 typedef void (^ChipmunkPostStepBlock)();
00190
00192 - (void)addPostStepBlock:(ChipmunkPostStepBlock)block key:(id)key;
00193
00195 - (void)addPostStepAddition:(id <ChipmunkObject>)obj;
00196
00198 - (void)addPostStepRemoval:(id <ChipmunkObject>)obj;
00199
00201 - (NSArray *)pointQueryAll:(cpVect)point layers:(cpLayers)layers group:(id)group;
00202
00203
00204
00205
00207 - (ChipmunkShape *)pointQueryFirst:(cpVect)point layers:(cpLayers)layers group:(id)group;
00208
00210 - (NSArray *)segmentQueryAllFrom:(cpVect)start to:(cpVect)end layers:(cpLayers)layers group:(id)group;
00211
00212
00213
00214
00216 - (ChipmunkSegmentQueryInfo *)segmentQueryFirstFrom:(cpVect)start to:(cpVect)end layers:(cpLayers)layers group:(id)group;
00217
00219 - (NSArray *)bbQueryAll:(cpBB)bb layers:(cpLayers)layers group:(id)group;
00220
00221
00222
00223
00225 - (NSArray *)shapeQueryAll:(ChipmunkShape *)shape;
00226
00228 - (BOOL)shapeTest:shape;
00229
00231 - (void)activateShapesTouchingShape:(ChipmunkShape *)shape;
00232
00234 - (NSArray *)bodies;
00235
00237 - (NSArray *)shapes;
00238
00240 - (NSArray *)constraints;
00241
00243 - (void)reindexStatic;
00244
00247 - (void)reindexShape:(ChipmunkShape *)shape;
00248
00250 - (void)reindexShapesForBody:(ChipmunkBody *)body;
00251
00253 - (void)step:(cpFloat)dt;
00254
00255 @end
00256
00257
00258
00270 #define CHIPMUNK_ARBITER_GET_SHAPES(arb, a, b) ChipmunkShape *a, *b; { \
00271 cpShape *shapeA, *shapeB; \
00272 cpArbiterGetShapes(arb, &shapeA, &shapeB); \
00273 a = shapeA->data; b = shapeB->data; \
00274 }
00275
00276 #define CHIPMUNK_ARBITER_GET_BODIES(arb, a, b) ChipmunkBody *a, *b; { \
00277 cpBody *bodyA, *bodyB; \
00278 cpArbiterGetBodies(arb, &bodyA, &bodyB); \
00279 a = bodyA->data; b = bodyB->data; \
00280 }
00281
00282