Chipmunk2D Pro API Reference  6.2.1
 All Classes Functions Variables Typedefs Properties Groups Pages
ChipmunkSpace.h
1 // Copyright 2013 Howling Moon Software. All rights reserved.
2 // See http://chipmunk2d.net/legal.php for more information.
3 
10 struct cpSpace;
11 
12 @interface ChipmunkSpace : NSObject {
13 @protected
14  struct cpSpace *_space;
15  ChipmunkBody *_staticBody;
16 
17  NSMutableSet *_children;
18  NSMutableArray *_handlers;
19 
20  id _data;
21 }
22 
27 @property(nonatomic, assign) int iterations;
28 
30 @property(nonatomic, assign) cpVect gravity;
31 
37 @property(nonatomic, assign) cpFloat damping;
38 
40 @property(nonatomic, assign) cpFloat idleSpeedThreshold;
41 
46 @property(nonatomic, assign) cpFloat sleepTimeThreshold;
47 
54 @property(nonatomic, assign) cpFloat collisionSlop;
55 
61 @property(nonatomic, assign) cpFloat collisionBias;
62 
67 @property(nonatomic, assign) cpTimestamp collisionPersistence;
68 
73 @property(nonatomic, assign) bool enableContactGraph
74 __attribute__((__deprecated__));
75 
77 @property(nonatomic, readonly) cpSpace *space;
78 
83 @property(nonatomic, readonly) ChipmunkBody *staticBody;
84 
88 @property(nonatomic, readonly) cpFloat currentTimeStep;
89 
94 @property(nonatomic, assign) id data;
95 
98 +(ChipmunkSpace *)spaceFromCPSpace:(cpSpace *)space;
99 
112 - (void)setDefaultCollisionHandler:(id)delegate
113  begin:(SEL)begin
114  preSolve:(SEL)preSolve
115  postSolve:(SEL)postSolve
116  separate:(SEL)separate;
117 
133 - (void)addCollisionHandler:(id)delegate
134  typeA:(cpCollisionType)a typeB:(cpCollisionType)b
135  begin:(SEL)begin
136  preSolve:(SEL)preSolve
137  postSolve:(SEL)postSolve
138  separate:(SEL)separate;
139 
140 
142 - (void)removeCollisionHandlerForTypeA:(cpCollisionType)a andB:(cpCollisionType)b;
143 
150 -(id)add:(NSObject<ChipmunkObject> *)obj;
151 
158 -(id)remove:(NSObject<ChipmunkObject> *)obj;
159 
161 -(BOOL)contains:(NSObject<ChipmunkObject> *)obj;
162 
164 - (id)smartAdd:(NSObject<ChipmunkObject> *)obj;
165 
167 - (id)smartRemove:(NSObject<ChipmunkObject> *)obj;
168 
171 - (NSArray *)addBounds:(CGRect)bounds thickness:(cpFloat)radius
172  elasticity:(cpFloat)elasticity friction:(cpFloat)friction
173  layers:(cpLayers)layers group:(id)group
174  collisionType:(id)collisionType;
175 
176 
197 - (BOOL)addPostStepCallback:(id)target selector:(SEL)selector key:(id)key;
198 
200 typedef void (^ChipmunkPostStepBlock)(void);
201 
203 - (BOOL)addPostStepBlock:(ChipmunkPostStepBlock)block key:(id)key;
204 
206 - (void)addPostStepAddition:(NSObject<ChipmunkObject> *)obj;
207 
209 - (void)addPostStepRemoval:(NSObject<ChipmunkObject> *)obj;
210 
213 - (NSArray *)nearestPointQueryAll:(cpVect)point maxDistance:(cpFloat)maxDistance layers:(cpLayers)layers group:(cpGroup)group;
214 
217 - (ChipmunkNearestPointQueryInfo *)nearestPointQueryNearest:(cpVect)point maxDistance:(cpFloat)maxDistance layers:(cpLayers)layers group:(cpGroup)group;
218 
221 - (NSArray *)pointQueryAll:(cpVect)point layers:(cpLayers)layers group:(cpGroup)group __attribute__((__deprecated__));
222 
225 - (ChipmunkShape *)pointQueryFirst:(cpVect)point layers:(cpLayers)layers group:(cpGroup)group __attribute__((__deprecated__));
226 
228 - (NSArray *)segmentQueryAllFrom:(cpVect)start to:(cpVect)end layers:(cpLayers)layers group:(cpGroup)group;
229 
231 - (ChipmunkSegmentQueryInfo *)segmentQueryFirstFrom:(cpVect)start to:(cpVect)end layers:(cpLayers)layers group:(cpGroup)group;
232 
234 - (NSArray *)bbQueryAll:(cpBB)bb layers:(cpLayers)layers group:(cpGroup)group;
235 
237 - (NSArray *)shapeQueryAll:(ChipmunkShape *)shape;
238 
240 - (BOOL)shapeTest:(ChipmunkShape *)shape;
241 
243 - (void)activateShapesTouchingShape:(ChipmunkShape *)shape;
244 
246 - (NSArray *)bodies;
247 
249 - (NSArray *)shapes;
250 
252 - (NSArray *)constraints;
253 
255 - (void)reindexStatic;
256 
259 - (void)reindexShape:(ChipmunkShape *)shape;
260 
262 - (void)reindexShapesForBody:(ChipmunkBody *)body;
263 
265 - (void)step:(cpFloat)dt;
266 
267 @end
268 
269 //MARK: Misc
270 
282 #define CHIPMUNK_ARBITER_GET_SHAPES(__arb__, __a__, __b__) ChipmunkShape *__a__, *__b__; { \
283  cpShape *__shapeA__, *__shapeB__; \
284  cpArbiterGetShapes(__arb__, &__shapeA__, &__shapeB__); \
285  __a__ = __shapeA__->data; __b__ = __shapeB__->data; \
286 }
287 
288 #define CHIPMUNK_ARBITER_GET_BODIES(__arb__, __a__, __b__) ChipmunkBody *__a__, *__b__; { \
289  cpBody *__bodyA__, *__bodyB__; \
290  cpArbiterGetBodies(__arb__, &__bodyA__, &__bodyB__); \
291  __a__ = __bodyA__->data; __b__ = __bodyB__->data; \
292 }
293 
294