121 #define cpBodyAssertSane(body)
124 #define cpBodyAssertSane(body) cpBodySanityCheck(body)
141 return (CP_PRIVATE(body->node).root != ((
cpBody*)0));
147 return CP_PRIVATE(body->node).idleTime == INFINITY;
154 return (body->CP_PRIVATE(space) == ((
cpSpace*)0));
158 #define CP_DefineBodyStructGetter(type, member, name) \
159 static inline type cpBodyGet##name(const cpBody *body){return body->member;}
161 #define CP_DefineBodyStructSetter(type, member, name) \
162 static inline void cpBodySet##name(cpBody *body, const type value){ \
163 cpBodyActivate(body); \
164 body->member = value; \
165 cpBodyAssertSane(body); \
168 #define CP_DefineBodyStructProperty(type, member, name) \
169 CP_DefineBodyStructGetter(type, member, name) \
170 CP_DefineBodyStructSetter(type, member, name)
173 CP_DefineBodyStructGetter(
cpSpace*, CP_PRIVATE(space), Space)
175 CP_DefineBodyStructGetter(
cpFloat, m, Mass)
179 CP_DefineBodyStructGetter(cpFloat, i, Moment)
183 CP_DefineBodyStructGetter(
cpVect, p, Pos)
186 CP_DefineBodyStructProperty(cpVect, v, Vel)
187 CP_DefineBodyStructProperty(cpVect, f, Force)
188 CP_DefineBodyStructGetter(cpFloat, a, Angle)
191 CP_DefineBodyStructProperty(cpFloat, w, AngVel)
192 CP_DefineBodyStructProperty(cpFloat, t, Torque)
193 CP_DefineBodyStructGetter(cpVect, rot, Rot)
194 CP_DefineBodyStructProperty(cpFloat, v_limit, VelLimit)
195 CP_DefineBodyStructProperty(cpFloat, w_limit, AngVelLimit)
200 void cpBodyUpdatePosition(
cpBody *body, cpFloat dt);
233 return (vsq ? vsq*body->
m : 0.0f) + (wsq ? wsq*body->
i : 0.0f);