00001 @class ChipmunkNearestPointQueryInfo; 00002 @class ChipmunkSegmentQueryInfo; 00003 00004 00006 @interface ChipmunkShape : NSObject <ChipmunkBaseObject> { 00007 @public 00008 id data; 00009 } 00010 00013 +(ChipmunkShape *)shapeFromCPShape:(cpShape *)shape; 00014 00016 @property(nonatomic, readonly) cpShape *shape; 00017 00019 @property(nonatomic, retain) ChipmunkBody *body; 00020 00022 @property(nonatomic, readonly) cpBB bb; 00023 00025 @property(nonatomic, assign) BOOL sensor; 00026 00028 @property(nonatomic, assign) cpFloat elasticity; 00029 00031 @property(nonatomic, assign) cpFloat friction; 00032 00037 @property(nonatomic, assign) cpVect surfaceVel; 00038 00043 @property(nonatomic, assign) cpCollisionType collisionType; 00044 00049 @property(nonatomic, assign) cpGroup group; 00050 00052 @property(nonatomic, assign) cpLayers layers; 00053 00058 @property(nonatomic, assign) id data; 00059 00061 - (cpBB)cacheBB; 00062 00065 - (bool)pointQuery:(cpVect)point __attribute__((__deprecated__)); 00066 00067 - (ChipmunkNearestPointQueryInfo *)nearestPointQuery:(cpVect)point; 00068 - (ChipmunkSegmentQueryInfo *)segmentQueryFrom:(cpVect)start to:(cpVect)end; 00069 00070 @end 00071 00072 00073 @interface ChipmunkNearestPointQueryInfo : NSObject { 00074 @private 00075 cpNearestPointQueryInfo _info; 00076 } 00077 00078 - (id)initWithInfo:(cpNearestPointQueryInfo *)info; 00079 00081 @property(nonatomic, readonly) cpNearestPointQueryInfo *info; 00082 00084 @property(nonatomic, readonly) ChipmunkShape *shape; 00085 00088 @property(nonatomic, readonly) cpFloat dist; 00089 00091 @property(nonatomic, readonly) cpVect point; 00092 00093 @end 00094 00095 00097 @interface ChipmunkSegmentQueryInfo : NSObject { 00098 @private 00099 cpSegmentQueryInfo _info; 00100 cpVect _start, _end; 00101 } 00102 00103 - (id)initWithInfo:(cpSegmentQueryInfo *)info start:(cpVect)start end:(cpVect)end; 00104 00106 @property(nonatomic, readonly) cpSegmentQueryInfo *info; 00107 00109 @property(nonatomic, readonly) ChipmunkShape *shape; 00110 00112 @property(nonatomic, readonly) cpFloat t; 00113 00115 @property(nonatomic, readonly) cpVect normal; 00116 00118 @property(nonatomic, readonly) cpVect point; 00119 00121 @property(nonatomic, readonly) cpFloat dist; 00122 00124 @property(nonatomic, readonly) cpVect start; 00125 00127 @property(nonatomic, readonly) cpVect end; 00128 00129 @end 00130 00131 00133 @interface ChipmunkShapeQueryInfo : NSObject { 00134 @private 00135 ChipmunkShape *_shape; 00136 cpContactPointSet _contactPoints; 00137 } 00138 00139 - (id)initWithShape:(ChipmunkShape *)shape andPoints:(cpContactPointSet *)set; 00140 00141 @property(nonatomic, readonly) ChipmunkShape *shape; 00142 @property(nonatomic, readonly) cpContactPointSet *contactPoints; 00143 00144 @end 00145 00146 00148 @interface ChipmunkCircleShape : ChipmunkShape { 00149 @private 00150 cpCircleShape _shape; 00151 } 00152 00154 + (id)circleWithBody:(ChipmunkBody *)body radius:(cpFloat)radius offset:(cpVect)offset; 00155 00157 - (id)initWithBody:(ChipmunkBody *)body radius:(cpFloat)radius offset:(cpVect)offset; 00158 00160 @property(nonatomic, readonly) cpFloat radius; 00161 00163 @property(nonatomic, readonly) cpVect offset; 00164 00165 @end 00166 00167 00169 @interface ChipmunkSegmentShape : ChipmunkShape { 00170 @private 00171 cpSegmentShape _shape; 00172 } 00173 00175 + (id)segmentWithBody:(ChipmunkBody *)body from:(cpVect)a to:(cpVect)b radius:(cpFloat)radius; 00176 00178 - (id)initWithBody:(ChipmunkBody *)body from:(cpVect)a to:(cpVect)b radius:(cpFloat)radius; 00179 00181 @property(nonatomic, readonly) cpVect a; 00182 00184 @property(nonatomic, readonly) cpVect b; 00185 00187 @property(nonatomic, readonly) cpVect normal; 00188 00190 @property(nonatomic, readonly) cpFloat radius; 00191 00192 @end 00193 00194 00196 @interface ChipmunkPolyShape : ChipmunkShape { 00197 @private 00198 cpPolyShape _shape; 00199 } 00200 00202 + (id)polyWithBody:(ChipmunkBody *)body count:(int)count verts:(cpVect *)verts offset:(cpVect)offset; 00203 00205 + (id)boxWithBody:(ChipmunkBody *)body width:(cpFloat)width height:(cpFloat)height; 00206 00208 + (id)boxWithBody:(ChipmunkBody *)body bb:(cpBB)bb; 00209 00211 - (id)initWithBody:(ChipmunkBody *)body count:(int)count verts:(cpVect *)verts offset:(cpVect)offset; 00212 00214 - (id)initBoxWithBody:(ChipmunkBody *)body width:(cpFloat)width height:(cpFloat)height; 00215 00217 - (id)initBoxWithBody:(ChipmunkBody *)body bb:(cpBB)bb; 00218 00220 @property(nonatomic, readonly) int count; 00221 00223 - (cpVect)getVertex:(int)index; 00224 00225 @end 00226 00228 @interface ChipmunkStaticCircleShape : ChipmunkCircleShape 00229 @end 00230 00231 00233 @interface ChipmunkStaticSegmentShape : ChipmunkSegmentShape 00234 @end 00235 00237 @interface ChipmunkStaticPolyShape : ChipmunkPolyShape 00238 @end