PageRenderTime 47ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 1ms

/cocos2d/cocos/scripting/javascript/bindings/chipmunk/js_bindings_chipmunk_auto_classes.cpp

https://github.com/shuaibin-lam/OpenBird
C++ | 4917 lines | 3515 code | 918 blank | 484 comment | 263 complexity | 6ce27da3c45b16a8151a08ef5787fffa MD5 | raw file
Possible License(s): MIT, BSD-2-Clause, CC-BY-SA-3.0, LGPL-3.0, LGPL-2.1, BSD-3-Clause
  1. /*
  2. * AUTOGENERATED FILE. DO NOT EDIT IT
  3. * Generated by "generate_js_bindings.py -c chipmunk_jsb.ini" on 2012-11-07
  4. * Script version: v0.3
  5. */
  6. #include "js_bindings_config.h"
  7. #ifdef JSB_INCLUDE_CHIPMUNK
  8. #include "js_bindings_chipmunk_manual.h"
  9. #include "jsfriendapi.h"
  10. #include "js_bindings_config.h"
  11. #include "js_manual_conversions.h"
  12. #include "js_bindings_chipmunk_functions.h"
  13. /*
  14. * cpConstraint
  15. */
  16. #pragma mark - cpConstraint
  17. JSClass* JSB_cpConstraint_class = NULL;
  18. JSObject* JSB_cpConstraint_object = NULL;
  19. // Constructor
  20. JSBool JSB_cpConstraint_constructor(JSContext *cx, uint32_t argc, jsval *vp)
  21. {
  22. JSB_PRECONDITION2(argc==0, cx, JS_FALSE, "Invalid number of arguments");
  23. JSB_PRECONDITION2(false, cx, JS_TRUE, "No constructor");
  24. return JS_TRUE;
  25. }
  26. // Destructor
  27. void JSB_cpConstraint_finalize(JSFreeOp *fop, JSObject *jsthis)
  28. {
  29. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  30. if( proxy ) {
  31. CCLOGINFO("jsbindings: finalizing JS object %p (cpConstraint), handle: %p", jsthis, proxy->handle);
  32. jsb_del_jsobject_for_proxy(proxy->handle);
  33. if(proxy->flags == JSB_C_FLAG_CALL_FREE)
  34. cpConstraintFree( (cpConstraint*)proxy->handle);
  35. jsb_del_c_proxy_for_jsobject(jsthis);
  36. } else {
  37. CCLOGINFO("jsbindings: finalizing uninitialized JS object %p (cpConstraint)", jsthis);
  38. }
  39. }
  40. // Arguments:
  41. // Ret value: void
  42. JSBool JSB_cpConstraint_activateBodies(JSContext *cx, uint32_t argc, jsval *vp) {
  43. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  44. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  45. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  46. cpConstraint* arg0 = (cpConstraint*) proxy->handle;
  47. cpConstraintActivateBodies((cpConstraint*)arg0 );
  48. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  49. return JS_TRUE;
  50. }
  51. // Arguments:
  52. // Ret value: void
  53. JSBool JSB_cpConstraint_destroy(JSContext *cx, uint32_t argc, jsval *vp) {
  54. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  55. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  56. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  57. cpConstraint* arg0 = (cpConstraint*) proxy->handle;
  58. cpConstraintDestroy((cpConstraint*)arg0 );
  59. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  60. return JS_TRUE;
  61. }
  62. // Arguments:
  63. // Ret value: cpBody*
  64. JSBool JSB_cpConstraint_getA(JSContext *cx, uint32_t argc, jsval *vp) {
  65. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  66. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  67. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  68. cpConstraint* arg0 = (cpConstraint*) proxy->handle;
  69. cpBody* ret_val;
  70. ret_val = cpConstraintGetA((cpConstraint*)arg0 );
  71. jsval ret_jsval = c_class_to_jsval( cx, ret_val, JSB_cpBody_object, JSB_cpBody_class, "cpBody" );
  72. JS_SET_RVAL(cx, vp, ret_jsval);
  73. return JS_TRUE;
  74. }
  75. // Arguments:
  76. // Ret value: cpBody*
  77. JSBool JSB_cpConstraint_getB(JSContext *cx, uint32_t argc, jsval *vp) {
  78. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  79. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  80. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  81. cpConstraint* arg0 = (cpConstraint*) proxy->handle;
  82. cpBody* ret_val;
  83. ret_val = cpConstraintGetB((cpConstraint*)arg0 );
  84. jsval ret_jsval = c_class_to_jsval( cx, ret_val, JSB_cpBody_object, JSB_cpBody_class, "cpBody" );
  85. JS_SET_RVAL(cx, vp, ret_jsval);
  86. return JS_TRUE;
  87. }
  88. // Arguments:
  89. // Ret value: cpFloat
  90. JSBool JSB_cpConstraint_getErrorBias(JSContext *cx, uint32_t argc, jsval *vp) {
  91. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  92. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  93. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  94. cpConstraint* arg0 = (cpConstraint*) proxy->handle;
  95. cpFloat ret_val;
  96. ret_val = cpConstraintGetErrorBias((cpConstraint*)arg0 );
  97. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  98. return JS_TRUE;
  99. }
  100. // Arguments:
  101. // Ret value: cpFloat
  102. JSBool JSB_cpConstraint_getImpulse(JSContext *cx, uint32_t argc, jsval *vp) {
  103. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  104. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  105. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  106. cpConstraint* arg0 = (cpConstraint*) proxy->handle;
  107. cpFloat ret_val;
  108. ret_val = cpConstraintGetImpulse((cpConstraint*)arg0 );
  109. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  110. return JS_TRUE;
  111. }
  112. // Arguments:
  113. // Ret value: cpFloat
  114. JSBool JSB_cpConstraint_getMaxBias(JSContext *cx, uint32_t argc, jsval *vp) {
  115. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  116. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  117. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  118. cpConstraint* arg0 = (cpConstraint*) proxy->handle;
  119. cpFloat ret_val;
  120. ret_val = cpConstraintGetMaxBias((cpConstraint*)arg0 );
  121. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  122. return JS_TRUE;
  123. }
  124. // Arguments:
  125. // Ret value: cpFloat
  126. JSBool JSB_cpConstraint_getMaxForce(JSContext *cx, uint32_t argc, jsval *vp) {
  127. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  128. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  129. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  130. cpConstraint* arg0 = (cpConstraint*) proxy->handle;
  131. cpFloat ret_val;
  132. ret_val = cpConstraintGetMaxForce((cpConstraint*)arg0 );
  133. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  134. return JS_TRUE;
  135. }
  136. // Arguments:
  137. // Ret value: cpSpace*
  138. JSBool JSB_cpConstraint_getSpace(JSContext *cx, uint32_t argc, jsval *vp) {
  139. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  140. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  141. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  142. cpConstraint* arg0 = (cpConstraint*) proxy->handle;
  143. cpSpace* ret_val;
  144. ret_val = cpConstraintGetSpace((cpConstraint*)arg0 );
  145. jsval ret_jsval = c_class_to_jsval( cx, ret_val, JSB_cpSpace_object, JSB_cpSpace_class, "cpSpace" );
  146. JS_SET_RVAL(cx, vp, ret_jsval);
  147. return JS_TRUE;
  148. }
  149. // Arguments: cpFloat
  150. // Ret value: void
  151. JSBool JSB_cpConstraint_setErrorBias(JSContext *cx, uint32_t argc, jsval *vp) {
  152. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  153. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  154. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  155. cpConstraint* arg0 = (cpConstraint*) proxy->handle;
  156. jsval *argvp = JS_ARGV(cx,vp);
  157. JSBool ok = JS_TRUE;
  158. double arg1;
  159. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  160. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  161. cpConstraintSetErrorBias((cpConstraint*)arg0 , (cpFloat)arg1 );
  162. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  163. return JS_TRUE;
  164. }
  165. // Arguments: cpFloat
  166. // Ret value: void
  167. JSBool JSB_cpConstraint_setMaxBias(JSContext *cx, uint32_t argc, jsval *vp) {
  168. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  169. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  170. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  171. cpConstraint* arg0 = (cpConstraint*) proxy->handle;
  172. jsval *argvp = JS_ARGV(cx,vp);
  173. JSBool ok = JS_TRUE;
  174. double arg1;
  175. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  176. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  177. cpConstraintSetMaxBias((cpConstraint*)arg0 , (cpFloat)arg1 );
  178. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  179. return JS_TRUE;
  180. }
  181. // Arguments: cpFloat
  182. // Ret value: void
  183. JSBool JSB_cpConstraint_setMaxForce(JSContext *cx, uint32_t argc, jsval *vp) {
  184. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  185. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  186. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  187. cpConstraint* arg0 = (cpConstraint*) proxy->handle;
  188. jsval *argvp = JS_ARGV(cx,vp);
  189. JSBool ok = JS_TRUE;
  190. double arg1;
  191. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  192. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  193. cpConstraintSetMaxForce((cpConstraint*)arg0 , (cpFloat)arg1 );
  194. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  195. return JS_TRUE;
  196. }
  197. void JSB_cpConstraint_createClass(JSContext *cx, JSObject* globalObj, const char* name )
  198. {
  199. JSB_cpConstraint_class = (JSClass *)calloc(1, sizeof(JSClass));
  200. JSB_cpConstraint_class->name = name;
  201. JSB_cpConstraint_class->addProperty = JS_PropertyStub;
  202. JSB_cpConstraint_class->delProperty = JS_DeletePropertyStub;
  203. JSB_cpConstraint_class->getProperty = JS_PropertyStub;
  204. JSB_cpConstraint_class->setProperty = JS_StrictPropertyStub;
  205. JSB_cpConstraint_class->enumerate = JS_EnumerateStub;
  206. JSB_cpConstraint_class->resolve = JS_ResolveStub;
  207. JSB_cpConstraint_class->convert = JS_ConvertStub;
  208. JSB_cpConstraint_class->finalize = JSB_cpConstraint_finalize;
  209. JSB_cpConstraint_class->flags = JSCLASS_HAS_PRIVATE;
  210. static JSPropertySpec properties[] = {
  211. {0, 0, 0, 0, 0}
  212. };
  213. static JSFunctionSpec funcs[] = {
  214. JS_FN("activateBodies", JSB_cpConstraint_activateBodies, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  215. JS_FN("destroy", JSB_cpConstraint_destroy, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  216. JS_FN("getA", JSB_cpConstraint_getA, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  217. JS_FN("getB", JSB_cpConstraint_getB, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  218. JS_FN("getErrorBias", JSB_cpConstraint_getErrorBias, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  219. JS_FN("getImpulse", JSB_cpConstraint_getImpulse, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  220. JS_FN("getMaxBias", JSB_cpConstraint_getMaxBias, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  221. JS_FN("getMaxForce", JSB_cpConstraint_getMaxForce, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  222. JS_FN("getSpace", JSB_cpConstraint_getSpace, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  223. JS_FN("setErrorBias", JSB_cpConstraint_setErrorBias, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  224. JS_FN("setMaxBias", JSB_cpConstraint_setMaxBias, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  225. JS_FN("setMaxForce", JSB_cpConstraint_setMaxForce, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  226. JS_FS_END
  227. };
  228. static JSFunctionSpec st_funcs[] = {
  229. JS_FS_END
  230. };
  231. JSB_cpConstraint_object = JS_InitClass(cx, globalObj, JSB_cpBase_object, JSB_cpConstraint_class, JSB_cpConstraint_constructor,0,properties,funcs,NULL,st_funcs);
  232. JSBool found;
  233. JS_SetPropertyAttributes(cx, globalObj, name, JSPROP_ENUMERATE | JSPROP_READONLY, &found);
  234. }
  235. /*
  236. * cpGrooveJoint
  237. */
  238. #pragma mark - cpGrooveJoint
  239. JSClass* JSB_cpGrooveJoint_class = NULL;
  240. JSObject* JSB_cpGrooveJoint_object = NULL;
  241. // Arguments: cpBody*, cpBody*, cpVect, cpVect, cpVect
  242. // Constructor
  243. JSBool JSB_cpGrooveJoint_constructor(JSContext *cx, uint32_t argc, jsval *vp)
  244. {
  245. JSB_PRECONDITION2(argc==5, cx, JS_FALSE, "Invalid number of arguments");
  246. JSObject *jsobj = JS_NewObject(cx, JSB_cpGrooveJoint_class, JSB_cpGrooveJoint_object, NULL);
  247. jsval *argvp = JS_ARGV(cx,vp);
  248. JSBool ok = JS_TRUE;
  249. cpBody* arg0; cpBody* arg1; cpVect arg2; cpVect arg3; cpVect arg4;
  250. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg0, NULL );
  251. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg1, NULL );
  252. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg2 );
  253. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg3 );
  254. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg4 );
  255. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  256. void* ret_val = cpGrooveJointNew((cpBody*)arg0 , (cpBody*)arg1 , (cpVect)arg2 , (cpVect)arg3 , (cpVect)arg4 );
  257. jsb_set_jsobject_for_proxy(jsobj, ret_val);
  258. jsb_set_c_proxy_for_jsobject(jsobj, ret_val, JSB_C_FLAG_CALL_FREE);
  259. JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(jsobj));
  260. return JS_TRUE;
  261. }
  262. // Destructor
  263. void JSB_cpGrooveJoint_finalize(JSFreeOp *fop, JSObject *jsthis)
  264. {
  265. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  266. if( proxy ) {
  267. CCLOGINFO("jsbindings: finalizing JS object %p (cpGrooveJoint), handle: %p", jsthis, proxy->handle);
  268. jsb_del_jsobject_for_proxy(proxy->handle);
  269. if(proxy->flags == JSB_C_FLAG_CALL_FREE)
  270. cpConstraintFree( (cpConstraint*)proxy->handle);
  271. jsb_del_c_proxy_for_jsobject(jsthis);
  272. } else {
  273. CCLOGINFO("jsbindings: finalizing uninitialized JS object %p (cpGrooveJoint)", jsthis);
  274. }
  275. }
  276. // Arguments:
  277. // Ret value: cpVect
  278. JSBool JSB_cpGrooveJoint_getAnchr2(JSContext *cx, uint32_t argc, jsval *vp) {
  279. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  280. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  281. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  282. cpGrooveJoint* arg0 = (cpGrooveJoint*) proxy->handle;
  283. cpVect ret_val;
  284. ret_val = cpGrooveJointGetAnchr2((cpConstraint*)arg0 );
  285. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  286. JS_SET_RVAL(cx, vp, ret_jsval);
  287. return JS_TRUE;
  288. }
  289. // Arguments:
  290. // Ret value: cpVect
  291. JSBool JSB_cpGrooveJoint_getGrooveA(JSContext *cx, uint32_t argc, jsval *vp) {
  292. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  293. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  294. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  295. cpGrooveJoint* arg0 = (cpGrooveJoint*) proxy->handle;
  296. cpVect ret_val;
  297. ret_val = cpGrooveJointGetGrooveA((cpConstraint*)arg0 );
  298. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  299. JS_SET_RVAL(cx, vp, ret_jsval);
  300. return JS_TRUE;
  301. }
  302. // Arguments:
  303. // Ret value: cpVect
  304. JSBool JSB_cpGrooveJoint_getGrooveB(JSContext *cx, uint32_t argc, jsval *vp) {
  305. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  306. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  307. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  308. cpGrooveJoint* arg0 = (cpGrooveJoint*) proxy->handle;
  309. cpVect ret_val;
  310. ret_val = cpGrooveJointGetGrooveB((cpConstraint*)arg0 );
  311. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  312. JS_SET_RVAL(cx, vp, ret_jsval);
  313. return JS_TRUE;
  314. }
  315. // Arguments: cpVect
  316. // Ret value: void
  317. JSBool JSB_cpGrooveJoint_setAnchr2(JSContext *cx, uint32_t argc, jsval *vp) {
  318. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  319. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  320. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  321. cpGrooveJoint* arg0 = (cpGrooveJoint*) proxy->handle;
  322. jsval *argvp = JS_ARGV(cx,vp);
  323. JSBool ok = JS_TRUE;
  324. cpVect arg1;
  325. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg1 );
  326. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  327. cpGrooveJointSetAnchr2((cpConstraint*)arg0 , (cpVect)arg1 );
  328. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  329. return JS_TRUE;
  330. }
  331. // Arguments: cpVect
  332. // Ret value: void
  333. JSBool JSB_cpGrooveJoint_setGrooveA(JSContext *cx, uint32_t argc, jsval *vp) {
  334. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  335. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  336. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  337. cpGrooveJoint* arg0 = (cpGrooveJoint*) proxy->handle;
  338. jsval *argvp = JS_ARGV(cx,vp);
  339. JSBool ok = JS_TRUE;
  340. cpVect arg1;
  341. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg1 );
  342. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  343. cpGrooveJointSetGrooveA((cpConstraint*)arg0 , (cpVect)arg1 );
  344. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  345. return JS_TRUE;
  346. }
  347. // Arguments: cpVect
  348. // Ret value: void
  349. JSBool JSB_cpGrooveJoint_setGrooveB(JSContext *cx, uint32_t argc, jsval *vp) {
  350. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  351. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  352. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  353. cpGrooveJoint* arg0 = (cpGrooveJoint*) proxy->handle;
  354. jsval *argvp = JS_ARGV(cx,vp);
  355. JSBool ok = JS_TRUE;
  356. cpVect arg1;
  357. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg1 );
  358. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  359. cpGrooveJointSetGrooveB((cpConstraint*)arg0 , (cpVect)arg1 );
  360. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  361. return JS_TRUE;
  362. }
  363. void JSB_cpGrooveJoint_createClass(JSContext *cx, JSObject* globalObj, const char* name )
  364. {
  365. JSB_cpGrooveJoint_class = (JSClass *)calloc(1, sizeof(JSClass));
  366. JSB_cpGrooveJoint_class->name = name;
  367. JSB_cpGrooveJoint_class->addProperty = JS_PropertyStub;
  368. JSB_cpGrooveJoint_class->delProperty = JS_DeletePropertyStub;
  369. JSB_cpGrooveJoint_class->getProperty = JS_PropertyStub;
  370. JSB_cpGrooveJoint_class->setProperty = JS_StrictPropertyStub;
  371. JSB_cpGrooveJoint_class->enumerate = JS_EnumerateStub;
  372. JSB_cpGrooveJoint_class->resolve = JS_ResolveStub;
  373. JSB_cpGrooveJoint_class->convert = JS_ConvertStub;
  374. JSB_cpGrooveJoint_class->finalize = JSB_cpGrooveJoint_finalize;
  375. JSB_cpGrooveJoint_class->flags = JSCLASS_HAS_PRIVATE;
  376. static JSPropertySpec properties[] = {
  377. {0, 0, 0, 0, 0}
  378. };
  379. static JSFunctionSpec funcs[] = {
  380. JS_FN("getAnchr2", JSB_cpGrooveJoint_getAnchr2, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  381. JS_FN("getGrooveA", JSB_cpGrooveJoint_getGrooveA, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  382. JS_FN("getGrooveB", JSB_cpGrooveJoint_getGrooveB, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  383. JS_FN("setAnchr2", JSB_cpGrooveJoint_setAnchr2, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  384. JS_FN("setGrooveA", JSB_cpGrooveJoint_setGrooveA, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  385. JS_FN("setGrooveB", JSB_cpGrooveJoint_setGrooveB, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  386. JS_FS_END
  387. };
  388. static JSFunctionSpec st_funcs[] = {
  389. JS_FS_END
  390. };
  391. JSB_cpGrooveJoint_object = JS_InitClass(cx, globalObj, JSB_cpConstraint_object, JSB_cpGrooveJoint_class, JSB_cpGrooveJoint_constructor,0,properties,funcs,NULL,st_funcs);
  392. JSBool found;
  393. JS_SetPropertyAttributes(cx, globalObj, name, JSPROP_ENUMERATE | JSPROP_READONLY, &found);
  394. }
  395. /*
  396. * cpSimpleMotor
  397. */
  398. #pragma mark - cpSimpleMotor
  399. JSClass* JSB_cpSimpleMotor_class = NULL;
  400. JSObject* JSB_cpSimpleMotor_object = NULL;
  401. // Arguments: cpBody*, cpBody*, cpFloat
  402. // Constructor
  403. JSBool JSB_cpSimpleMotor_constructor(JSContext *cx, uint32_t argc, jsval *vp)
  404. {
  405. JSB_PRECONDITION2(argc==3, cx, JS_FALSE, "Invalid number of arguments");
  406. JSObject *jsobj = JS_NewObject(cx, JSB_cpSimpleMotor_class, JSB_cpSimpleMotor_object, NULL);
  407. jsval *argvp = JS_ARGV(cx,vp);
  408. JSBool ok = JS_TRUE;
  409. cpBody* arg0; cpBody* arg1; double arg2;
  410. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg0, NULL );
  411. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg1, NULL );
  412. ok &= JS_ValueToNumber( cx, *argvp++, &arg2 );
  413. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  414. void* ret_val = cpSimpleMotorNew((cpBody*)arg0 , (cpBody*)arg1 , (cpFloat)arg2 );
  415. jsb_set_jsobject_for_proxy(jsobj, ret_val);
  416. jsb_set_c_proxy_for_jsobject(jsobj, ret_val, JSB_C_FLAG_CALL_FREE);
  417. JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(jsobj));
  418. return JS_TRUE;
  419. }
  420. // Destructor
  421. void JSB_cpSimpleMotor_finalize(JSFreeOp *fop, JSObject *jsthis)
  422. {
  423. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  424. if( proxy ) {
  425. CCLOGINFO("jsbindings: finalizing JS object %p (cpSimpleMotor), handle: %p", jsthis, proxy->handle);
  426. jsb_del_jsobject_for_proxy(proxy->handle);
  427. if(proxy->flags == JSB_C_FLAG_CALL_FREE)
  428. cpConstraintFree( (cpConstraint*)proxy->handle);
  429. jsb_del_c_proxy_for_jsobject(jsthis);
  430. } else {
  431. CCLOGINFO("jsbindings: finalizing uninitialized JS object %p (cpSimpleMotor)", jsthis);
  432. }
  433. }
  434. // Arguments:
  435. // Ret value: cpFloat
  436. JSBool JSB_cpSimpleMotor_getRate(JSContext *cx, uint32_t argc, jsval *vp) {
  437. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  438. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  439. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  440. cpSimpleMotor* arg0 = (cpSimpleMotor*) proxy->handle;
  441. cpFloat ret_val;
  442. ret_val = cpSimpleMotorGetRate((cpConstraint*)arg0 );
  443. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  444. return JS_TRUE;
  445. }
  446. // Arguments: cpFloat
  447. // Ret value: void
  448. JSBool JSB_cpSimpleMotor_setRate(JSContext *cx, uint32_t argc, jsval *vp) {
  449. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  450. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  451. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  452. cpSimpleMotor* arg0 = (cpSimpleMotor*) proxy->handle;
  453. jsval *argvp = JS_ARGV(cx,vp);
  454. JSBool ok = JS_TRUE;
  455. double arg1;
  456. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  457. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  458. cpSimpleMotorSetRate((cpConstraint*)arg0 , (cpFloat)arg1 );
  459. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  460. return JS_TRUE;
  461. }
  462. void JSB_cpSimpleMotor_createClass(JSContext *cx, JSObject* globalObj, const char* name )
  463. {
  464. JSB_cpSimpleMotor_class = (JSClass *)calloc(1, sizeof(JSClass));
  465. JSB_cpSimpleMotor_class->name = name;
  466. JSB_cpSimpleMotor_class->addProperty = JS_PropertyStub;
  467. JSB_cpSimpleMotor_class->delProperty = JS_DeletePropertyStub;
  468. JSB_cpSimpleMotor_class->getProperty = JS_PropertyStub;
  469. JSB_cpSimpleMotor_class->setProperty = JS_StrictPropertyStub;
  470. JSB_cpSimpleMotor_class->enumerate = JS_EnumerateStub;
  471. JSB_cpSimpleMotor_class->resolve = JS_ResolveStub;
  472. JSB_cpSimpleMotor_class->convert = JS_ConvertStub;
  473. JSB_cpSimpleMotor_class->finalize = JSB_cpSimpleMotor_finalize;
  474. JSB_cpSimpleMotor_class->flags = JSCLASS_HAS_PRIVATE;
  475. static JSPropertySpec properties[] = {
  476. {0, 0, 0, 0, 0}
  477. };
  478. static JSFunctionSpec funcs[] = {
  479. JS_FN("getRate", JSB_cpSimpleMotor_getRate, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  480. JS_FN("setRate", JSB_cpSimpleMotor_setRate, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  481. JS_FS_END
  482. };
  483. static JSFunctionSpec st_funcs[] = {
  484. JS_FS_END
  485. };
  486. JSB_cpSimpleMotor_object = JS_InitClass(cx, globalObj, JSB_cpConstraint_object, JSB_cpSimpleMotor_class, JSB_cpSimpleMotor_constructor,0,properties,funcs,NULL,st_funcs);
  487. JSBool found;
  488. JS_SetPropertyAttributes(cx, globalObj, name, JSPROP_ENUMERATE | JSPROP_READONLY, &found);
  489. }
  490. /*
  491. * cpPivotJoint
  492. */
  493. #pragma mark - cpPivotJoint
  494. JSClass* JSB_cpPivotJoint_class = NULL;
  495. JSObject* JSB_cpPivotJoint_object = NULL;
  496. // Arguments: cpBody*, cpBody*, cpVect
  497. // Constructor
  498. JSBool JSB_cpPivotJoint_constructor(JSContext *cx, uint32_t argc, jsval *vp)
  499. {
  500. JSB_PRECONDITION2(argc==4 || argc==3, cx, JS_FALSE, "Invalid number of arguments");
  501. JSObject *jsobj = JS_NewObject(cx, JSB_cpPivotJoint_class, JSB_cpPivotJoint_object, NULL);
  502. jsval *argvp = JS_ARGV(cx,vp);
  503. JSBool ok = JS_TRUE;
  504. cpBody* arg0; cpBody* arg1; cpVect arg2; cpVect arg3; void *ret_val;
  505. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg0, NULL );
  506. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg1, NULL );
  507. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg2 );
  508. if(argc == 4) {
  509. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg3 );
  510. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  511. ret_val = cpPivotJointNew2((cpBody*)arg0 , (cpBody*)arg1 , (cpVect)arg2, (cpVect)arg3 );
  512. } else {
  513. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  514. ret_val = cpPivotJointNew((cpBody*)arg0 , (cpBody*)arg1 , (cpVect)arg2);
  515. }
  516. jsb_set_jsobject_for_proxy(jsobj, ret_val);
  517. jsb_set_c_proxy_for_jsobject(jsobj, ret_val, JSB_C_FLAG_CALL_FREE);
  518. JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(jsobj));
  519. return JS_TRUE;
  520. }
  521. // Destructor
  522. void JSB_cpPivotJoint_finalize(JSFreeOp *fop, JSObject *jsthis)
  523. {
  524. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  525. if( proxy ) {
  526. CCLOGINFO("jsbindings: finalizing JS object %p (cpPivotJoint), handle: %p", jsthis, proxy->handle);
  527. jsb_del_jsobject_for_proxy(proxy->handle);
  528. if(proxy->flags == JSB_C_FLAG_CALL_FREE)
  529. cpConstraintFree( (cpConstraint*)proxy->handle);
  530. jsb_del_c_proxy_for_jsobject(jsthis);
  531. } else {
  532. CCLOGINFO("jsbindings: finalizing uninitialized JS object %p (cpPivotJoint)", jsthis);
  533. }
  534. }
  535. // Arguments:
  536. // Ret value: cpVect
  537. JSBool JSB_cpPivotJoint_getAnchr1(JSContext *cx, uint32_t argc, jsval *vp) {
  538. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  539. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  540. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  541. cpPivotJoint* arg0 = (cpPivotJoint*) proxy->handle;
  542. cpVect ret_val;
  543. ret_val = cpPivotJointGetAnchr1((cpConstraint*)arg0 );
  544. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  545. JS_SET_RVAL(cx, vp, ret_jsval);
  546. return JS_TRUE;
  547. }
  548. // Arguments:
  549. // Ret value: cpVect
  550. JSBool JSB_cpPivotJoint_getAnchr2(JSContext *cx, uint32_t argc, jsval *vp) {
  551. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  552. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  553. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  554. cpPivotJoint* arg0 = (cpPivotJoint*) proxy->handle;
  555. cpVect ret_val;
  556. ret_val = cpPivotJointGetAnchr2((cpConstraint*)arg0 );
  557. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  558. JS_SET_RVAL(cx, vp, ret_jsval);
  559. return JS_TRUE;
  560. }
  561. // Arguments: cpVect
  562. // Ret value: void
  563. JSBool JSB_cpPivotJoint_setAnchr1(JSContext *cx, uint32_t argc, jsval *vp) {
  564. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  565. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  566. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  567. cpPivotJoint* arg0 = (cpPivotJoint*) proxy->handle;
  568. jsval *argvp = JS_ARGV(cx,vp);
  569. JSBool ok = JS_TRUE;
  570. cpVect arg1;
  571. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg1 );
  572. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  573. cpPivotJointSetAnchr1((cpConstraint*)arg0 , (cpVect)arg1 );
  574. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  575. return JS_TRUE;
  576. }
  577. // Arguments: cpVect
  578. // Ret value: void
  579. JSBool JSB_cpPivotJoint_setAnchr2(JSContext *cx, uint32_t argc, jsval *vp) {
  580. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  581. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  582. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  583. cpPivotJoint* arg0 = (cpPivotJoint*) proxy->handle;
  584. jsval *argvp = JS_ARGV(cx,vp);
  585. JSBool ok = JS_TRUE;
  586. cpVect arg1;
  587. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg1 );
  588. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  589. cpPivotJointSetAnchr2((cpConstraint*)arg0 , (cpVect)arg1 );
  590. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  591. return JS_TRUE;
  592. }
  593. void JSB_cpPivotJoint_createClass(JSContext *cx, JSObject* globalObj, const char* name )
  594. {
  595. JSB_cpPivotJoint_class = (JSClass *)calloc(1, sizeof(JSClass));
  596. JSB_cpPivotJoint_class->name = name;
  597. JSB_cpPivotJoint_class->addProperty = JS_PropertyStub;
  598. JSB_cpPivotJoint_class->delProperty = JS_DeletePropertyStub;
  599. JSB_cpPivotJoint_class->getProperty = JS_PropertyStub;
  600. JSB_cpPivotJoint_class->setProperty = JS_StrictPropertyStub;
  601. JSB_cpPivotJoint_class->enumerate = JS_EnumerateStub;
  602. JSB_cpPivotJoint_class->resolve = JS_ResolveStub;
  603. JSB_cpPivotJoint_class->convert = JS_ConvertStub;
  604. JSB_cpPivotJoint_class->finalize = JSB_cpPivotJoint_finalize;
  605. JSB_cpPivotJoint_class->flags = JSCLASS_HAS_PRIVATE;
  606. static JSPropertySpec properties[] = {
  607. {0, 0, 0, 0, 0}
  608. };
  609. static JSFunctionSpec funcs[] = {
  610. JS_FN("getAnchr1", JSB_cpPivotJoint_getAnchr1, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  611. JS_FN("getAnchr2", JSB_cpPivotJoint_getAnchr2, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  612. JS_FN("setAnchr1", JSB_cpPivotJoint_setAnchr1, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  613. JS_FN("setAnchr2", JSB_cpPivotJoint_setAnchr2, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  614. JS_FS_END
  615. };
  616. static JSFunctionSpec st_funcs[] = {
  617. JS_FS_END
  618. };
  619. JSB_cpPivotJoint_object = JS_InitClass(cx, globalObj, JSB_cpConstraint_object, JSB_cpPivotJoint_class, JSB_cpPivotJoint_constructor,0,properties,funcs,NULL,st_funcs);
  620. JSBool found;
  621. JS_SetPropertyAttributes(cx, globalObj, name, JSPROP_ENUMERATE | JSPROP_READONLY, &found);
  622. }
  623. /*
  624. * cpPinJoint
  625. */
  626. #pragma mark - cpPinJoint
  627. JSClass* JSB_cpPinJoint_class = NULL;
  628. JSObject* JSB_cpPinJoint_object = NULL;
  629. // Arguments: cpBody*, cpBody*, cpVect, cpVect
  630. // Constructor
  631. JSBool JSB_cpPinJoint_constructor(JSContext *cx, uint32_t argc, jsval *vp)
  632. {
  633. JSB_PRECONDITION2(argc==4, cx, JS_FALSE, "Invalid number of arguments");
  634. JSObject *jsobj = JS_NewObject(cx, JSB_cpPinJoint_class, JSB_cpPinJoint_object, NULL);
  635. jsval *argvp = JS_ARGV(cx,vp);
  636. JSBool ok = JS_TRUE;
  637. cpBody* arg0; cpBody* arg1; cpVect arg2; cpVect arg3;
  638. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg0, NULL );
  639. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg1, NULL );
  640. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg2 );
  641. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg3 );
  642. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  643. void* ret_val = cpPinJointNew((cpBody*)arg0 , (cpBody*)arg1 , (cpVect)arg2 , (cpVect)arg3 );
  644. jsb_set_jsobject_for_proxy(jsobj, ret_val);
  645. jsb_set_c_proxy_for_jsobject(jsobj, ret_val, JSB_C_FLAG_CALL_FREE);
  646. JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(jsobj));
  647. return JS_TRUE;
  648. }
  649. // Destructor
  650. void JSB_cpPinJoint_finalize(JSFreeOp *fop, JSObject *jsthis)
  651. {
  652. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  653. if( proxy ) {
  654. CCLOGINFO("jsbindings: finalizing JS object %p (cpPinJoint), handle: %p", jsthis, proxy->handle);
  655. jsb_del_jsobject_for_proxy(proxy->handle);
  656. if(proxy->flags == JSB_C_FLAG_CALL_FREE)
  657. cpConstraintFree( (cpConstraint*)proxy->handle);
  658. jsb_del_c_proxy_for_jsobject(jsthis);
  659. } else {
  660. CCLOGINFO("jsbindings: finalizing uninitialized JS object %p (cpPinJoint)", jsthis);
  661. }
  662. }
  663. // Arguments:
  664. // Ret value: cpVect
  665. JSBool JSB_cpPinJoint_getAnchr1(JSContext *cx, uint32_t argc, jsval *vp) {
  666. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  667. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  668. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  669. cpPinJoint* arg0 = (cpPinJoint*) proxy->handle;
  670. cpVect ret_val;
  671. ret_val = cpPinJointGetAnchr1((cpConstraint*)arg0 );
  672. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  673. JS_SET_RVAL(cx, vp, ret_jsval);
  674. return JS_TRUE;
  675. }
  676. // Arguments:
  677. // Ret value: cpVect
  678. JSBool JSB_cpPinJoint_getAnchr2(JSContext *cx, uint32_t argc, jsval *vp) {
  679. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  680. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  681. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  682. cpPinJoint* arg0 = (cpPinJoint*) proxy->handle;
  683. cpVect ret_val;
  684. ret_val = cpPinJointGetAnchr2((cpConstraint*)arg0 );
  685. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  686. JS_SET_RVAL(cx, vp, ret_jsval);
  687. return JS_TRUE;
  688. }
  689. // Arguments:
  690. // Ret value: cpFloat
  691. JSBool JSB_cpPinJoint_getDist(JSContext *cx, uint32_t argc, jsval *vp) {
  692. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  693. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  694. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  695. cpPinJoint* arg0 = (cpPinJoint*) proxy->handle;
  696. cpFloat ret_val;
  697. ret_val = cpPinJointGetDist((cpConstraint*)arg0 );
  698. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  699. return JS_TRUE;
  700. }
  701. // Arguments: cpVect
  702. // Ret value: void
  703. JSBool JSB_cpPinJoint_setAnchr1(JSContext *cx, uint32_t argc, jsval *vp) {
  704. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  705. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  706. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  707. cpPinJoint* arg0 = (cpPinJoint*) proxy->handle;
  708. jsval *argvp = JS_ARGV(cx,vp);
  709. JSBool ok = JS_TRUE;
  710. cpVect arg1;
  711. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg1 );
  712. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  713. cpPinJointSetAnchr1((cpConstraint*)arg0 , (cpVect)arg1 );
  714. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  715. return JS_TRUE;
  716. }
  717. // Arguments: cpVect
  718. // Ret value: void
  719. JSBool JSB_cpPinJoint_setAnchr2(JSContext *cx, uint32_t argc, jsval *vp) {
  720. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  721. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  722. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  723. cpPinJoint* arg0 = (cpPinJoint*) proxy->handle;
  724. jsval *argvp = JS_ARGV(cx,vp);
  725. JSBool ok = JS_TRUE;
  726. cpVect arg1;
  727. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg1 );
  728. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  729. cpPinJointSetAnchr2((cpConstraint*)arg0 , (cpVect)arg1 );
  730. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  731. return JS_TRUE;
  732. }
  733. // Arguments: cpFloat
  734. // Ret value: void
  735. JSBool JSB_cpPinJoint_setDist(JSContext *cx, uint32_t argc, jsval *vp) {
  736. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  737. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  738. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  739. cpPinJoint* arg0 = (cpPinJoint*) proxy->handle;
  740. jsval *argvp = JS_ARGV(cx,vp);
  741. JSBool ok = JS_TRUE;
  742. double arg1;
  743. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  744. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  745. cpPinJointSetDist((cpConstraint*)arg0 , (cpFloat)arg1 );
  746. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  747. return JS_TRUE;
  748. }
  749. void JSB_cpPinJoint_createClass(JSContext *cx, JSObject* globalObj, const char* name )
  750. {
  751. JSB_cpPinJoint_class = (JSClass *)calloc(1, sizeof(JSClass));
  752. JSB_cpPinJoint_class->name = name;
  753. JSB_cpPinJoint_class->addProperty = JS_PropertyStub;
  754. JSB_cpPinJoint_class->delProperty = JS_DeletePropertyStub;
  755. JSB_cpPinJoint_class->getProperty = JS_PropertyStub;
  756. JSB_cpPinJoint_class->setProperty = JS_StrictPropertyStub;
  757. JSB_cpPinJoint_class->enumerate = JS_EnumerateStub;
  758. JSB_cpPinJoint_class->resolve = JS_ResolveStub;
  759. JSB_cpPinJoint_class->convert = JS_ConvertStub;
  760. JSB_cpPinJoint_class->finalize = JSB_cpPinJoint_finalize;
  761. JSB_cpPinJoint_class->flags = JSCLASS_HAS_PRIVATE;
  762. static JSPropertySpec properties[] = {
  763. {0, 0, 0, 0, 0}
  764. };
  765. static JSFunctionSpec funcs[] = {
  766. JS_FN("getAnchr1", JSB_cpPinJoint_getAnchr1, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  767. JS_FN("getAnchr2", JSB_cpPinJoint_getAnchr2, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  768. JS_FN("getDist", JSB_cpPinJoint_getDist, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  769. JS_FN("setAnchr1", JSB_cpPinJoint_setAnchr1, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  770. JS_FN("setAnchr2", JSB_cpPinJoint_setAnchr2, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  771. JS_FN("setDist", JSB_cpPinJoint_setDist, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  772. JS_FS_END
  773. };
  774. static JSFunctionSpec st_funcs[] = {
  775. JS_FS_END
  776. };
  777. JSB_cpPinJoint_object = JS_InitClass(cx, globalObj, JSB_cpConstraint_object, JSB_cpPinJoint_class, JSB_cpPinJoint_constructor,0,properties,funcs,NULL,st_funcs);
  778. JSBool found;
  779. JS_SetPropertyAttributes(cx, globalObj, name, JSPROP_ENUMERATE | JSPROP_READONLY, &found);
  780. }
  781. /*
  782. * cpSlideJoint
  783. */
  784. #pragma mark - cpSlideJoint
  785. JSClass* JSB_cpSlideJoint_class = NULL;
  786. JSObject* JSB_cpSlideJoint_object = NULL;
  787. // Arguments: cpBody*, cpBody*, cpVect, cpVect, cpFloat, cpFloat
  788. // Constructor
  789. JSBool JSB_cpSlideJoint_constructor(JSContext *cx, uint32_t argc, jsval *vp)
  790. {
  791. JSB_PRECONDITION2(argc==6, cx, JS_FALSE, "Invalid number of arguments");
  792. JSObject *jsobj = JS_NewObject(cx, JSB_cpSlideJoint_class, JSB_cpSlideJoint_object, NULL);
  793. jsval *argvp = JS_ARGV(cx,vp);
  794. JSBool ok = JS_TRUE;
  795. cpBody* arg0; cpBody* arg1; cpVect arg2; cpVect arg3; double arg4; double arg5;
  796. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg0, NULL );
  797. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg1, NULL );
  798. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg2 );
  799. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg3 );
  800. ok &= JS_ValueToNumber( cx, *argvp++, &arg4 );
  801. ok &= JS_ValueToNumber( cx, *argvp++, &arg5 );
  802. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  803. void* ret_val = cpSlideJointNew((cpBody*)arg0 , (cpBody*)arg1 , (cpVect)arg2 , (cpVect)arg3 , (cpFloat)arg4 , (cpFloat)arg5 );
  804. jsb_set_jsobject_for_proxy(jsobj, ret_val);
  805. jsb_set_c_proxy_for_jsobject(jsobj, ret_val, JSB_C_FLAG_CALL_FREE);
  806. JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(jsobj));
  807. return JS_TRUE;
  808. }
  809. // Destructor
  810. void JSB_cpSlideJoint_finalize(JSFreeOp *fop, JSObject *jsthis)
  811. {
  812. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  813. if( proxy ) {
  814. CCLOGINFO("jsbindings: finalizing JS object %p (cpSlideJoint), handle: %p", jsthis, proxy->handle);
  815. jsb_del_jsobject_for_proxy(proxy->handle);
  816. if(proxy->flags == JSB_C_FLAG_CALL_FREE)
  817. cpConstraintFree( (cpConstraint*)proxy->handle);
  818. jsb_del_c_proxy_for_jsobject(jsthis);
  819. } else {
  820. CCLOGINFO("jsbindings: finalizing uninitialized JS object %p (cpSlideJoint)", jsthis);
  821. }
  822. }
  823. // Arguments:
  824. // Ret value: cpVect
  825. JSBool JSB_cpSlideJoint_getAnchr1(JSContext *cx, uint32_t argc, jsval *vp) {
  826. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  827. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  828. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  829. cpSlideJoint* arg0 = (cpSlideJoint*) proxy->handle;
  830. cpVect ret_val;
  831. ret_val = cpSlideJointGetAnchr1((cpConstraint*)arg0 );
  832. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  833. JS_SET_RVAL(cx, vp, ret_jsval);
  834. return JS_TRUE;
  835. }
  836. // Arguments:
  837. // Ret value: cpVect
  838. JSBool JSB_cpSlideJoint_getAnchr2(JSContext *cx, uint32_t argc, jsval *vp) {
  839. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  840. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  841. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  842. cpSlideJoint* arg0 = (cpSlideJoint*) proxy->handle;
  843. cpVect ret_val;
  844. ret_val = cpSlideJointGetAnchr2((cpConstraint*)arg0 );
  845. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  846. JS_SET_RVAL(cx, vp, ret_jsval);
  847. return JS_TRUE;
  848. }
  849. // Arguments:
  850. // Ret value: cpFloat
  851. JSBool JSB_cpSlideJoint_getMax(JSContext *cx, uint32_t argc, jsval *vp) {
  852. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  853. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  854. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  855. cpSlideJoint* arg0 = (cpSlideJoint*) proxy->handle;
  856. cpFloat ret_val;
  857. ret_val = cpSlideJointGetMax((cpConstraint*)arg0 );
  858. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  859. return JS_TRUE;
  860. }
  861. // Arguments:
  862. // Ret value: cpFloat
  863. JSBool JSB_cpSlideJoint_getMin(JSContext *cx, uint32_t argc, jsval *vp) {
  864. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  865. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  866. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  867. cpSlideJoint* arg0 = (cpSlideJoint*) proxy->handle;
  868. cpFloat ret_val;
  869. ret_val = cpSlideJointGetMin((cpConstraint*)arg0 );
  870. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  871. return JS_TRUE;
  872. }
  873. // Arguments: cpVect
  874. // Ret value: void
  875. JSBool JSB_cpSlideJoint_setAnchr1(JSContext *cx, uint32_t argc, jsval *vp) {
  876. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  877. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  878. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  879. cpSlideJoint* arg0 = (cpSlideJoint*) proxy->handle;
  880. jsval *argvp = JS_ARGV(cx,vp);
  881. JSBool ok = JS_TRUE;
  882. cpVect arg1;
  883. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg1 );
  884. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  885. cpSlideJointSetAnchr1((cpConstraint*)arg0 , (cpVect)arg1 );
  886. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  887. return JS_TRUE;
  888. }
  889. // Arguments: cpVect
  890. // Ret value: void
  891. JSBool JSB_cpSlideJoint_setAnchr2(JSContext *cx, uint32_t argc, jsval *vp) {
  892. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  893. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  894. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  895. cpSlideJoint* arg0 = (cpSlideJoint*) proxy->handle;
  896. jsval *argvp = JS_ARGV(cx,vp);
  897. JSBool ok = JS_TRUE;
  898. cpVect arg1;
  899. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg1 );
  900. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  901. cpSlideJointSetAnchr2((cpConstraint*)arg0 , (cpVect)arg1 );
  902. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  903. return JS_TRUE;
  904. }
  905. // Arguments: cpFloat
  906. // Ret value: void
  907. JSBool JSB_cpSlideJoint_setMax(JSContext *cx, uint32_t argc, jsval *vp) {
  908. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  909. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  910. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  911. cpSlideJoint* arg0 = (cpSlideJoint*) proxy->handle;
  912. jsval *argvp = JS_ARGV(cx,vp);
  913. JSBool ok = JS_TRUE;
  914. double arg1;
  915. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  916. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  917. cpSlideJointSetMax((cpConstraint*)arg0 , (cpFloat)arg1 );
  918. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  919. return JS_TRUE;
  920. }
  921. // Arguments: cpFloat
  922. // Ret value: void
  923. JSBool JSB_cpSlideJoint_setMin(JSContext *cx, uint32_t argc, jsval *vp) {
  924. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  925. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  926. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  927. cpSlideJoint* arg0 = (cpSlideJoint*) proxy->handle;
  928. jsval *argvp = JS_ARGV(cx,vp);
  929. JSBool ok = JS_TRUE;
  930. double arg1;
  931. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  932. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  933. cpSlideJointSetMin((cpConstraint*)arg0 , (cpFloat)arg1 );
  934. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  935. return JS_TRUE;
  936. }
  937. void JSB_cpSlideJoint_createClass(JSContext *cx, JSObject* globalObj, const char* name )
  938. {
  939. JSB_cpSlideJoint_class = (JSClass *)calloc(1, sizeof(JSClass));
  940. JSB_cpSlideJoint_class->name = name;
  941. JSB_cpSlideJoint_class->addProperty = JS_PropertyStub;
  942. JSB_cpSlideJoint_class->delProperty = JS_DeletePropertyStub;
  943. JSB_cpSlideJoint_class->getProperty = JS_PropertyStub;
  944. JSB_cpSlideJoint_class->setProperty = JS_StrictPropertyStub;
  945. JSB_cpSlideJoint_class->enumerate = JS_EnumerateStub;
  946. JSB_cpSlideJoint_class->resolve = JS_ResolveStub;
  947. JSB_cpSlideJoint_class->convert = JS_ConvertStub;
  948. JSB_cpSlideJoint_class->finalize = JSB_cpSlideJoint_finalize;
  949. JSB_cpSlideJoint_class->flags = JSCLASS_HAS_PRIVATE;
  950. static JSPropertySpec properties[] = {
  951. {0, 0, 0, 0, 0}
  952. };
  953. static JSFunctionSpec funcs[] = {
  954. JS_FN("getAnchr1", JSB_cpSlideJoint_getAnchr1, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  955. JS_FN("getAnchr2", JSB_cpSlideJoint_getAnchr2, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  956. JS_FN("getMax", JSB_cpSlideJoint_getMax, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  957. JS_FN("getMin", JSB_cpSlideJoint_getMin, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  958. JS_FN("setAnchr1", JSB_cpSlideJoint_setAnchr1, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  959. JS_FN("setAnchr2", JSB_cpSlideJoint_setAnchr2, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  960. JS_FN("setMax", JSB_cpSlideJoint_setMax, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  961. JS_FN("setMin", JSB_cpSlideJoint_setMin, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  962. JS_FS_END
  963. };
  964. static JSFunctionSpec st_funcs[] = {
  965. JS_FS_END
  966. };
  967. JSB_cpSlideJoint_object = JS_InitClass(cx, globalObj, JSB_cpConstraint_object, JSB_cpSlideJoint_class, JSB_cpSlideJoint_constructor,0,properties,funcs,NULL,st_funcs);
  968. JSBool found;
  969. JS_SetPropertyAttributes(cx, globalObj, name, JSPROP_ENUMERATE | JSPROP_READONLY, &found);
  970. }
  971. /*
  972. * cpGearJoint
  973. */
  974. #pragma mark - cpGearJoint
  975. JSClass* JSB_cpGearJoint_class = NULL;
  976. JSObject* JSB_cpGearJoint_object = NULL;
  977. // Arguments: cpBody*, cpBody*, cpFloat, cpFloat
  978. // Constructor
  979. JSBool JSB_cpGearJoint_constructor(JSContext *cx, uint32_t argc, jsval *vp)
  980. {
  981. JSB_PRECONDITION2(argc==4, cx, JS_FALSE, "Invalid number of arguments");
  982. JSObject *jsobj = JS_NewObject(cx, JSB_cpGearJoint_class, JSB_cpGearJoint_object, NULL);
  983. jsval *argvp = JS_ARGV(cx,vp);
  984. JSBool ok = JS_TRUE;
  985. cpBody* arg0; cpBody* arg1; double arg2; double arg3;
  986. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg0, NULL );
  987. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg1, NULL );
  988. ok &= JS_ValueToNumber( cx, *argvp++, &arg2 );
  989. ok &= JS_ValueToNumber( cx, *argvp++, &arg3 );
  990. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  991. void* ret_val = cpGearJointNew((cpBody*)arg0 , (cpBody*)arg1 , (cpFloat)arg2 , (cpFloat)arg3 );
  992. jsb_set_jsobject_for_proxy(jsobj, ret_val);
  993. jsb_set_c_proxy_for_jsobject(jsobj, ret_val, JSB_C_FLAG_CALL_FREE);
  994. JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(jsobj));
  995. return JS_TRUE;
  996. }
  997. // Destructor
  998. void JSB_cpGearJoint_finalize(JSFreeOp *fop, JSObject *jsthis)
  999. {
  1000. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1001. if( proxy ) {
  1002. CCLOGINFO("jsbindings: finalizing JS object %p (cpGearJoint), handle: %p", jsthis, proxy->handle);
  1003. jsb_del_jsobject_for_proxy(proxy->handle);
  1004. if(proxy->flags == JSB_C_FLAG_CALL_FREE)
  1005. cpConstraintFree( (cpConstraint*)proxy->handle);
  1006. jsb_del_c_proxy_for_jsobject(jsthis);
  1007. } else {
  1008. CCLOGINFO("jsbindings: finalizing uninitialized JS object %p (cpGearJoint)", jsthis);
  1009. }
  1010. }
  1011. // Arguments:
  1012. // Ret value: cpFloat
  1013. JSBool JSB_cpGearJoint_getPhase(JSContext *cx, uint32_t argc, jsval *vp) {
  1014. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  1015. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1016. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1017. cpGearJoint* arg0 = (cpGearJoint*) proxy->handle;
  1018. cpFloat ret_val;
  1019. ret_val = cpGearJointGetPhase((cpConstraint*)arg0 );
  1020. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  1021. return JS_TRUE;
  1022. }
  1023. // Arguments:
  1024. // Ret value: cpFloat
  1025. JSBool JSB_cpGearJoint_getRatio(JSContext *cx, uint32_t argc, jsval *vp) {
  1026. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  1027. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1028. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1029. cpGearJoint* arg0 = (cpGearJoint*) proxy->handle;
  1030. cpFloat ret_val;
  1031. ret_val = cpGearJointGetRatio((cpConstraint*)arg0 );
  1032. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  1033. return JS_TRUE;
  1034. }
  1035. // Arguments: cpFloat
  1036. // Ret value: void
  1037. JSBool JSB_cpGearJoint_setPhase(JSContext *cx, uint32_t argc, jsval *vp) {
  1038. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  1039. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1040. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1041. cpGearJoint* arg0 = (cpGearJoint*) proxy->handle;
  1042. jsval *argvp = JS_ARGV(cx,vp);
  1043. JSBool ok = JS_TRUE;
  1044. double arg1;
  1045. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  1046. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  1047. cpGearJointSetPhase((cpConstraint*)arg0 , (cpFloat)arg1 );
  1048. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  1049. return JS_TRUE;
  1050. }
  1051. // Arguments: cpFloat
  1052. // Ret value: void
  1053. JSBool JSB_cpGearJoint_setRatio(JSContext *cx, uint32_t argc, jsval *vp) {
  1054. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  1055. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1056. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1057. cpGearJoint* arg0 = (cpGearJoint*) proxy->handle;
  1058. jsval *argvp = JS_ARGV(cx,vp);
  1059. JSBool ok = JS_TRUE;
  1060. double arg1;
  1061. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  1062. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  1063. cpGearJointSetRatio((cpConstraint*)arg0 , (cpFloat)arg1 );
  1064. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  1065. return JS_TRUE;
  1066. }
  1067. void JSB_cpGearJoint_createClass(JSContext *cx, JSObject* globalObj, const char* name )
  1068. {
  1069. JSB_cpGearJoint_class = (JSClass *)calloc(1, sizeof(JSClass));
  1070. JSB_cpGearJoint_class->name = name;
  1071. JSB_cpGearJoint_class->addProperty = JS_PropertyStub;
  1072. JSB_cpGearJoint_class->delProperty = JS_DeletePropertyStub;
  1073. JSB_cpGearJoint_class->getProperty = JS_PropertyStub;
  1074. JSB_cpGearJoint_class->setProperty = JS_StrictPropertyStub;
  1075. JSB_cpGearJoint_class->enumerate = JS_EnumerateStub;
  1076. JSB_cpGearJoint_class->resolve = JS_ResolveStub;
  1077. JSB_cpGearJoint_class->convert = JS_ConvertStub;
  1078. JSB_cpGearJoint_class->finalize = JSB_cpGearJoint_finalize;
  1079. JSB_cpGearJoint_class->flags = JSCLASS_HAS_PRIVATE;
  1080. static JSPropertySpec properties[] = {
  1081. {0, 0, 0, 0, 0}
  1082. };
  1083. static JSFunctionSpec funcs[] = {
  1084. JS_FN("getPhase", JSB_cpGearJoint_getPhase, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1085. JS_FN("getRatio", JSB_cpGearJoint_getRatio, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1086. JS_FN("setPhase", JSB_cpGearJoint_setPhase, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1087. JS_FN("setRatio", JSB_cpGearJoint_setRatio, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1088. JS_FS_END
  1089. };
  1090. static JSFunctionSpec st_funcs[] = {
  1091. JS_FS_END
  1092. };
  1093. JSB_cpGearJoint_object = JS_InitClass(cx, globalObj, JSB_cpConstraint_object, JSB_cpGearJoint_class, JSB_cpGearJoint_constructor,0,properties,funcs,NULL,st_funcs);
  1094. JSBool found;
  1095. JS_SetPropertyAttributes(cx, globalObj, name, JSPROP_ENUMERATE | JSPROP_READONLY, &found);
  1096. }
  1097. /*
  1098. * cpDampedRotarySpring
  1099. */
  1100. #pragma mark - cpDampedRotarySpring
  1101. JSClass* JSB_cpDampedRotarySpring_class = NULL;
  1102. JSObject* JSB_cpDampedRotarySpring_object = NULL;
  1103. // Arguments: cpBody*, cpBody*, cpFloat, cpFloat, cpFloat
  1104. // Constructor
  1105. JSBool JSB_cpDampedRotarySpring_constructor(JSContext *cx, uint32_t argc, jsval *vp)
  1106. {
  1107. JSB_PRECONDITION2(argc==5, cx, JS_FALSE, "Invalid number of arguments");
  1108. JSObject *jsobj = JS_NewObject(cx, JSB_cpDampedRotarySpring_class, JSB_cpDampedRotarySpring_object, NULL);
  1109. jsval *argvp = JS_ARGV(cx,vp);
  1110. JSBool ok = JS_TRUE;
  1111. cpBody* arg0; cpBody* arg1; double arg2; double arg3; double arg4;
  1112. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg0, NULL );
  1113. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg1, NULL );
  1114. ok &= JS_ValueToNumber( cx, *argvp++, &arg2 );
  1115. ok &= JS_ValueToNumber( cx, *argvp++, &arg3 );
  1116. ok &= JS_ValueToNumber( cx, *argvp++, &arg4 );
  1117. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  1118. void* ret_val = cpDampedRotarySpringNew((cpBody*)arg0 , (cpBody*)arg1 , (cpFloat)arg2 , (cpFloat)arg3 , (cpFloat)arg4 );
  1119. jsb_set_jsobject_for_proxy(jsobj, ret_val);
  1120. jsb_set_c_proxy_for_jsobject(jsobj, ret_val, JSB_C_FLAG_CALL_FREE);
  1121. JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(jsobj));
  1122. return JS_TRUE;
  1123. }
  1124. // Destructor
  1125. void JSB_cpDampedRotarySpring_finalize(JSFreeOp *fop, JSObject *jsthis)
  1126. {
  1127. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1128. if( proxy ) {
  1129. CCLOGINFO("jsbindings: finalizing JS object %p (cpDampedRotarySpring), handle: %p", jsthis, proxy->handle);
  1130. jsb_del_jsobject_for_proxy(proxy->handle);
  1131. if(proxy->flags == JSB_C_FLAG_CALL_FREE)
  1132. cpConstraintFree( (cpConstraint*)proxy->handle);
  1133. jsb_del_c_proxy_for_jsobject(jsthis);
  1134. } else {
  1135. CCLOGINFO("jsbindings: finalizing uninitialized JS object %p (cpDampedRotarySpring)", jsthis);
  1136. }
  1137. }
  1138. // Arguments:
  1139. // Ret value: cpFloat
  1140. JSBool JSB_cpDampedRotarySpring_getDamping(JSContext *cx, uint32_t argc, jsval *vp) {
  1141. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  1142. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1143. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1144. cpDampedRotarySpring* arg0 = (cpDampedRotarySpring*) proxy->handle;
  1145. cpFloat ret_val;
  1146. ret_val = cpDampedRotarySpringGetDamping((cpConstraint*)arg0 );
  1147. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  1148. return JS_TRUE;
  1149. }
  1150. // Arguments:
  1151. // Ret value: cpFloat
  1152. JSBool JSB_cpDampedRotarySpring_getRestAngle(JSContext *cx, uint32_t argc, jsval *vp) {
  1153. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  1154. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1155. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1156. cpDampedRotarySpring* arg0 = (cpDampedRotarySpring*) proxy->handle;
  1157. cpFloat ret_val;
  1158. ret_val = cpDampedRotarySpringGetRestAngle((cpConstraint*)arg0 );
  1159. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  1160. return JS_TRUE;
  1161. }
  1162. // Arguments:
  1163. // Ret value: cpFloat
  1164. JSBool JSB_cpDampedRotarySpring_getStiffness(JSContext *cx, uint32_t argc, jsval *vp) {
  1165. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  1166. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1167. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1168. cpDampedRotarySpring* arg0 = (cpDampedRotarySpring*) proxy->handle;
  1169. cpFloat ret_val;
  1170. ret_val = cpDampedRotarySpringGetStiffness((cpConstraint*)arg0 );
  1171. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  1172. return JS_TRUE;
  1173. }
  1174. // Arguments: cpFloat
  1175. // Ret value: void
  1176. JSBool JSB_cpDampedRotarySpring_setDamping(JSContext *cx, uint32_t argc, jsval *vp) {
  1177. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  1178. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1179. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1180. cpDampedRotarySpring* arg0 = (cpDampedRotarySpring*) proxy->handle;
  1181. jsval *argvp = JS_ARGV(cx,vp);
  1182. JSBool ok = JS_TRUE;
  1183. double arg1;
  1184. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  1185. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  1186. cpDampedRotarySpringSetDamping((cpConstraint*)arg0 , (cpFloat)arg1 );
  1187. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  1188. return JS_TRUE;
  1189. }
  1190. // Arguments: cpFloat
  1191. // Ret value: void
  1192. JSBool JSB_cpDampedRotarySpring_setRestAngle(JSContext *cx, uint32_t argc, jsval *vp) {
  1193. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  1194. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1195. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1196. cpDampedRotarySpring* arg0 = (cpDampedRotarySpring*) proxy->handle;
  1197. jsval *argvp = JS_ARGV(cx,vp);
  1198. JSBool ok = JS_TRUE;
  1199. double arg1;
  1200. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  1201. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  1202. cpDampedRotarySpringSetRestAngle((cpConstraint*)arg0 , (cpFloat)arg1 );
  1203. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  1204. return JS_TRUE;
  1205. }
  1206. // Arguments: cpFloat
  1207. // Ret value: void
  1208. JSBool JSB_cpDampedRotarySpring_setStiffness(JSContext *cx, uint32_t argc, jsval *vp) {
  1209. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  1210. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1211. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1212. cpDampedRotarySpring* arg0 = (cpDampedRotarySpring*) proxy->handle;
  1213. jsval *argvp = JS_ARGV(cx,vp);
  1214. JSBool ok = JS_TRUE;
  1215. double arg1;
  1216. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  1217. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  1218. cpDampedRotarySpringSetStiffness((cpConstraint*)arg0 , (cpFloat)arg1 );
  1219. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  1220. return JS_TRUE;
  1221. }
  1222. void JSB_cpDampedRotarySpring_createClass(JSContext *cx, JSObject* globalObj, const char* name )
  1223. {
  1224. JSB_cpDampedRotarySpring_class = (JSClass *)calloc(1, sizeof(JSClass));
  1225. JSB_cpDampedRotarySpring_class->name = name;
  1226. JSB_cpDampedRotarySpring_class->addProperty = JS_PropertyStub;
  1227. JSB_cpDampedRotarySpring_class->delProperty = JS_DeletePropertyStub;
  1228. JSB_cpDampedRotarySpring_class->getProperty = JS_PropertyStub;
  1229. JSB_cpDampedRotarySpring_class->setProperty = JS_StrictPropertyStub;
  1230. JSB_cpDampedRotarySpring_class->enumerate = JS_EnumerateStub;
  1231. JSB_cpDampedRotarySpring_class->resolve = JS_ResolveStub;
  1232. JSB_cpDampedRotarySpring_class->convert = JS_ConvertStub;
  1233. JSB_cpDampedRotarySpring_class->finalize = JSB_cpDampedRotarySpring_finalize;
  1234. JSB_cpDampedRotarySpring_class->flags = JSCLASS_HAS_PRIVATE;
  1235. static JSPropertySpec properties[] = {
  1236. {0, 0, 0, 0, 0}
  1237. };
  1238. static JSFunctionSpec funcs[] = {
  1239. JS_FN("getDamping", JSB_cpDampedRotarySpring_getDamping, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1240. JS_FN("getRestAngle", JSB_cpDampedRotarySpring_getRestAngle, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1241. JS_FN("getStiffness", JSB_cpDampedRotarySpring_getStiffness, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1242. JS_FN("setDamping", JSB_cpDampedRotarySpring_setDamping, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1243. JS_FN("setRestAngle", JSB_cpDampedRotarySpring_setRestAngle, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1244. JS_FN("setStiffness", JSB_cpDampedRotarySpring_setStiffness, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1245. JS_FS_END
  1246. };
  1247. static JSFunctionSpec st_funcs[] = {
  1248. JS_FS_END
  1249. };
  1250. JSB_cpDampedRotarySpring_object = JS_InitClass(cx, globalObj, JSB_cpConstraint_object, JSB_cpDampedRotarySpring_class, JSB_cpDampedRotarySpring_constructor,0,properties,funcs,NULL,st_funcs);
  1251. JSBool found;
  1252. JS_SetPropertyAttributes(cx, globalObj, name, JSPROP_ENUMERATE | JSPROP_READONLY, &found);
  1253. }
  1254. /*
  1255. * cpDampedSpring
  1256. */
  1257. #pragma mark - cpDampedSpring
  1258. JSClass* JSB_cpDampedSpring_class = NULL;
  1259. JSObject* JSB_cpDampedSpring_object = NULL;
  1260. // Arguments: cpBody*, cpBody*, cpVect, cpVect, cpFloat, cpFloat, cpFloat
  1261. // Constructor
  1262. JSBool JSB_cpDampedSpring_constructor(JSContext *cx, uint32_t argc, jsval *vp)
  1263. {
  1264. JSB_PRECONDITION2(argc==7, cx, JS_FALSE, "Invalid number of arguments");
  1265. JSObject *jsobj = JS_NewObject(cx, JSB_cpDampedSpring_class, JSB_cpDampedSpring_object, NULL);
  1266. jsval *argvp = JS_ARGV(cx,vp);
  1267. JSBool ok = JS_TRUE;
  1268. cpBody* arg0; cpBody* arg1; cpVect arg2; cpVect arg3; double arg4; double arg5; double arg6;
  1269. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg0, NULL );
  1270. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg1, NULL );
  1271. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg2 );
  1272. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg3 );
  1273. ok &= JS_ValueToNumber( cx, *argvp++, &arg4 );
  1274. ok &= JS_ValueToNumber( cx, *argvp++, &arg5 );
  1275. ok &= JS_ValueToNumber( cx, *argvp++, &arg6 );
  1276. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  1277. void* ret_val = cpDampedSpringNew((cpBody*)arg0 , (cpBody*)arg1 , (cpVect)arg2 , (cpVect)arg3 , (cpFloat)arg4 , (cpFloat)arg5 , (cpFloat)arg6 );
  1278. jsb_set_jsobject_for_proxy(jsobj, ret_val);
  1279. jsb_set_c_proxy_for_jsobject(jsobj, ret_val, JSB_C_FLAG_CALL_FREE);
  1280. JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(jsobj));
  1281. return JS_TRUE;
  1282. }
  1283. // Destructor
  1284. void JSB_cpDampedSpring_finalize(JSFreeOp *fop, JSObject *jsthis)
  1285. {
  1286. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1287. if( proxy ) {
  1288. CCLOGINFO("jsbindings: finalizing JS object %p (cpDampedSpring), handle: %p", jsthis, proxy->handle);
  1289. jsb_del_jsobject_for_proxy(proxy->handle);
  1290. if(proxy->flags == JSB_C_FLAG_CALL_FREE)
  1291. cpConstraintFree( (cpConstraint*)proxy->handle);
  1292. jsb_del_c_proxy_for_jsobject(jsthis);
  1293. } else {
  1294. CCLOGINFO("jsbindings: finalizing uninitialized JS object %p (cpDampedSpring)", jsthis);
  1295. }
  1296. }
  1297. // Arguments:
  1298. // Ret value: cpVect
  1299. JSBool JSB_cpDampedSpring_getAnchr1(JSContext *cx, uint32_t argc, jsval *vp) {
  1300. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  1301. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1302. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1303. cpDampedSpring* arg0 = (cpDampedSpring*) proxy->handle;
  1304. cpVect ret_val;
  1305. ret_val = cpDampedSpringGetAnchr1((cpConstraint*)arg0 );
  1306. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  1307. JS_SET_RVAL(cx, vp, ret_jsval);
  1308. return JS_TRUE;
  1309. }
  1310. // Arguments:
  1311. // Ret value: cpVect
  1312. JSBool JSB_cpDampedSpring_getAnchr2(JSContext *cx, uint32_t argc, jsval *vp) {
  1313. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  1314. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1315. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1316. cpDampedSpring* arg0 = (cpDampedSpring*) proxy->handle;
  1317. cpVect ret_val;
  1318. ret_val = cpDampedSpringGetAnchr2((cpConstraint*)arg0 );
  1319. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  1320. JS_SET_RVAL(cx, vp, ret_jsval);
  1321. return JS_TRUE;
  1322. }
  1323. // Arguments:
  1324. // Ret value: cpFloat
  1325. JSBool JSB_cpDampedSpring_getDamping(JSContext *cx, uint32_t argc, jsval *vp) {
  1326. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  1327. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1328. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1329. cpDampedSpring* arg0 = (cpDampedSpring*) proxy->handle;
  1330. cpFloat ret_val;
  1331. ret_val = cpDampedSpringGetDamping((cpConstraint*)arg0 );
  1332. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  1333. return JS_TRUE;
  1334. }
  1335. // Arguments:
  1336. // Ret value: cpFloat
  1337. JSBool JSB_cpDampedSpring_getRestLength(JSContext *cx, uint32_t argc, jsval *vp) {
  1338. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  1339. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1340. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1341. cpDampedSpring* arg0 = (cpDampedSpring*) proxy->handle;
  1342. cpFloat ret_val;
  1343. ret_val = cpDampedSpringGetRestLength((cpConstraint*)arg0 );
  1344. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  1345. return JS_TRUE;
  1346. }
  1347. // Arguments:
  1348. // Ret value: cpFloat
  1349. JSBool JSB_cpDampedSpring_getStiffness(JSContext *cx, uint32_t argc, jsval *vp) {
  1350. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  1351. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1352. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1353. cpDampedSpring* arg0 = (cpDampedSpring*) proxy->handle;
  1354. cpFloat ret_val;
  1355. ret_val = cpDampedSpringGetStiffness((cpConstraint*)arg0 );
  1356. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  1357. return JS_TRUE;
  1358. }
  1359. // Arguments: cpVect
  1360. // Ret value: void
  1361. JSBool JSB_cpDampedSpring_setAnchr1(JSContext *cx, uint32_t argc, jsval *vp) {
  1362. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  1363. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1364. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1365. cpDampedSpring* arg0 = (cpDampedSpring*) proxy->handle;
  1366. jsval *argvp = JS_ARGV(cx,vp);
  1367. JSBool ok = JS_TRUE;
  1368. cpVect arg1;
  1369. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg1 );
  1370. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  1371. cpDampedSpringSetAnchr1((cpConstraint*)arg0 , (cpVect)arg1 );
  1372. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  1373. return JS_TRUE;
  1374. }
  1375. // Arguments: cpVect
  1376. // Ret value: void
  1377. JSBool JSB_cpDampedSpring_setAnchr2(JSContext *cx, uint32_t argc, jsval *vp) {
  1378. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  1379. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1380. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1381. cpDampedSpring* arg0 = (cpDampedSpring*) proxy->handle;
  1382. jsval *argvp = JS_ARGV(cx,vp);
  1383. JSBool ok = JS_TRUE;
  1384. cpVect arg1;
  1385. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg1 );
  1386. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  1387. cpDampedSpringSetAnchr2((cpConstraint*)arg0 , (cpVect)arg1 );
  1388. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  1389. return JS_TRUE;
  1390. }
  1391. // Arguments: cpFloat
  1392. // Ret value: void
  1393. JSBool JSB_cpDampedSpring_setDamping(JSContext *cx, uint32_t argc, jsval *vp) {
  1394. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  1395. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1396. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1397. cpDampedSpring* arg0 = (cpDampedSpring*) proxy->handle;
  1398. jsval *argvp = JS_ARGV(cx,vp);
  1399. JSBool ok = JS_TRUE;
  1400. double arg1;
  1401. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  1402. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  1403. cpDampedSpringSetDamping((cpConstraint*)arg0 , (cpFloat)arg1 );
  1404. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  1405. return JS_TRUE;
  1406. }
  1407. // Arguments: cpFloat
  1408. // Ret value: void
  1409. JSBool JSB_cpDampedSpring_setRestLength(JSContext *cx, uint32_t argc, jsval *vp) {
  1410. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  1411. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1412. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1413. cpDampedSpring* arg0 = (cpDampedSpring*) proxy->handle;
  1414. jsval *argvp = JS_ARGV(cx,vp);
  1415. JSBool ok = JS_TRUE;
  1416. double arg1;
  1417. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  1418. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  1419. cpDampedSpringSetRestLength((cpConstraint*)arg0 , (cpFloat)arg1 );
  1420. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  1421. return JS_TRUE;
  1422. }
  1423. // Arguments: cpFloat
  1424. // Ret value: void
  1425. JSBool JSB_cpDampedSpring_setStiffness(JSContext *cx, uint32_t argc, jsval *vp) {
  1426. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  1427. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1428. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1429. cpDampedSpring* arg0 = (cpDampedSpring*) proxy->handle;
  1430. jsval *argvp = JS_ARGV(cx,vp);
  1431. JSBool ok = JS_TRUE;
  1432. double arg1;
  1433. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  1434. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  1435. cpDampedSpringSetStiffness((cpConstraint*)arg0 , (cpFloat)arg1 );
  1436. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  1437. return JS_TRUE;
  1438. }
  1439. void JSB_cpDampedSpring_createClass(JSContext *cx, JSObject* globalObj, const char* name )
  1440. {
  1441. JSB_cpDampedSpring_class = (JSClass *)calloc(1, sizeof(JSClass));
  1442. JSB_cpDampedSpring_class->name = name;
  1443. JSB_cpDampedSpring_class->addProperty = JS_PropertyStub;
  1444. JSB_cpDampedSpring_class->delProperty = JS_DeletePropertyStub;
  1445. JSB_cpDampedSpring_class->getProperty = JS_PropertyStub;
  1446. JSB_cpDampedSpring_class->setProperty = JS_StrictPropertyStub;
  1447. JSB_cpDampedSpring_class->enumerate = JS_EnumerateStub;
  1448. JSB_cpDampedSpring_class->resolve = JS_ResolveStub;
  1449. JSB_cpDampedSpring_class->convert = JS_ConvertStub;
  1450. JSB_cpDampedSpring_class->finalize = JSB_cpDampedSpring_finalize;
  1451. JSB_cpDampedSpring_class->flags = JSCLASS_HAS_PRIVATE;
  1452. static JSPropertySpec properties[] = {
  1453. {0, 0, 0, 0, 0}
  1454. };
  1455. static JSFunctionSpec funcs[] = {
  1456. JS_FN("getAnchr1", JSB_cpDampedSpring_getAnchr1, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1457. JS_FN("getAnchr2", JSB_cpDampedSpring_getAnchr2, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1458. JS_FN("getDamping", JSB_cpDampedSpring_getDamping, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1459. JS_FN("getRestLength", JSB_cpDampedSpring_getRestLength, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1460. JS_FN("getStiffness", JSB_cpDampedSpring_getStiffness, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1461. JS_FN("setAnchr1", JSB_cpDampedSpring_setAnchr1, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1462. JS_FN("setAnchr2", JSB_cpDampedSpring_setAnchr2, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1463. JS_FN("setDamping", JSB_cpDampedSpring_setDamping, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1464. JS_FN("setRestLength", JSB_cpDampedSpring_setRestLength, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1465. JS_FN("setStiffness", JSB_cpDampedSpring_setStiffness, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1466. JS_FS_END
  1467. };
  1468. static JSFunctionSpec st_funcs[] = {
  1469. JS_FS_END
  1470. };
  1471. JSB_cpDampedSpring_object = JS_InitClass(cx, globalObj, JSB_cpConstraint_object, JSB_cpDampedSpring_class, JSB_cpDampedSpring_constructor,0,properties,funcs,NULL,st_funcs);
  1472. JSBool found;
  1473. JS_SetPropertyAttributes(cx, globalObj, name, JSPROP_ENUMERATE | JSPROP_READONLY, &found);
  1474. }
  1475. /*
  1476. * cpRatchetJoint
  1477. */
  1478. #pragma mark - cpRatchetJoint
  1479. JSClass* JSB_cpRatchetJoint_class = NULL;
  1480. JSObject* JSB_cpRatchetJoint_object = NULL;
  1481. // Arguments: cpBody*, cpBody*, cpFloat, cpFloat
  1482. // Constructor
  1483. JSBool JSB_cpRatchetJoint_constructor(JSContext *cx, uint32_t argc, jsval *vp)
  1484. {
  1485. JSB_PRECONDITION2(argc==4, cx, JS_FALSE, "Invalid number of arguments");
  1486. JSObject *jsobj = JS_NewObject(cx, JSB_cpRatchetJoint_class, JSB_cpRatchetJoint_object, NULL);
  1487. jsval *argvp = JS_ARGV(cx,vp);
  1488. JSBool ok = JS_TRUE;
  1489. cpBody* arg0; cpBody* arg1; double arg2; double arg3;
  1490. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg0, NULL );
  1491. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg1, NULL );
  1492. ok &= JS_ValueToNumber( cx, *argvp++, &arg2 );
  1493. ok &= JS_ValueToNumber( cx, *argvp++, &arg3 );
  1494. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  1495. void* ret_val = cpRatchetJointNew((cpBody*)arg0 , (cpBody*)arg1 , (cpFloat)arg2 , (cpFloat)arg3 );
  1496. jsb_set_jsobject_for_proxy(jsobj, ret_val);
  1497. jsb_set_c_proxy_for_jsobject(jsobj, ret_val, JSB_C_FLAG_CALL_FREE);
  1498. JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(jsobj));
  1499. return JS_TRUE;
  1500. }
  1501. // Destructor
  1502. void JSB_cpRatchetJoint_finalize(JSFreeOp *fop, JSObject *jsthis)
  1503. {
  1504. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1505. if( proxy ) {
  1506. CCLOGINFO("jsbindings: finalizing JS object %p (cpRatchetJoint), handle: %p", jsthis, proxy->handle);
  1507. jsb_del_jsobject_for_proxy(proxy->handle);
  1508. if(proxy->flags == JSB_C_FLAG_CALL_FREE)
  1509. cpConstraintFree( (cpConstraint*)proxy->handle);
  1510. jsb_del_c_proxy_for_jsobject(jsthis);
  1511. } else {
  1512. CCLOGINFO("jsbindings: finalizing uninitialized JS object %p (cpRatchetJoint)", jsthis);
  1513. }
  1514. }
  1515. // Arguments:
  1516. // Ret value: cpFloat
  1517. JSBool JSB_cpRatchetJoint_getAngle(JSContext *cx, uint32_t argc, jsval *vp) {
  1518. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  1519. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1520. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1521. cpRatchetJoint* arg0 = (cpRatchetJoint*) proxy->handle;
  1522. cpFloat ret_val;
  1523. ret_val = cpRatchetJointGetAngle((cpConstraint*)arg0 );
  1524. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  1525. return JS_TRUE;
  1526. }
  1527. // Arguments:
  1528. // Ret value: cpFloat
  1529. JSBool JSB_cpRatchetJoint_getPhase(JSContext *cx, uint32_t argc, jsval *vp) {
  1530. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  1531. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1532. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1533. cpRatchetJoint* arg0 = (cpRatchetJoint*) proxy->handle;
  1534. cpFloat ret_val;
  1535. ret_val = cpRatchetJointGetPhase((cpConstraint*)arg0 );
  1536. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  1537. return JS_TRUE;
  1538. }
  1539. // Arguments:
  1540. // Ret value: cpFloat
  1541. JSBool JSB_cpRatchetJoint_getRatchet(JSContext *cx, uint32_t argc, jsval *vp) {
  1542. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  1543. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1544. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1545. cpRatchetJoint* arg0 = (cpRatchetJoint*) proxy->handle;
  1546. cpFloat ret_val;
  1547. ret_val = cpRatchetJointGetRatchet((cpConstraint*)arg0 );
  1548. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  1549. return JS_TRUE;
  1550. }
  1551. // Arguments: cpFloat
  1552. // Ret value: void
  1553. JSBool JSB_cpRatchetJoint_setAngle(JSContext *cx, uint32_t argc, jsval *vp) {
  1554. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  1555. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1556. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1557. cpRatchetJoint* arg0 = (cpRatchetJoint*) proxy->handle;
  1558. jsval *argvp = JS_ARGV(cx,vp);
  1559. JSBool ok = JS_TRUE;
  1560. double arg1;
  1561. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  1562. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  1563. cpRatchetJointSetAngle((cpConstraint*)arg0 , (cpFloat)arg1 );
  1564. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  1565. return JS_TRUE;
  1566. }
  1567. // Arguments: cpFloat
  1568. // Ret value: void
  1569. JSBool JSB_cpRatchetJoint_setPhase(JSContext *cx, uint32_t argc, jsval *vp) {
  1570. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  1571. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1572. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1573. cpRatchetJoint* arg0 = (cpRatchetJoint*) proxy->handle;
  1574. jsval *argvp = JS_ARGV(cx,vp);
  1575. JSBool ok = JS_TRUE;
  1576. double arg1;
  1577. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  1578. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  1579. cpRatchetJointSetPhase((cpConstraint*)arg0 , (cpFloat)arg1 );
  1580. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  1581. return JS_TRUE;
  1582. }
  1583. // Arguments: cpFloat
  1584. // Ret value: void
  1585. JSBool JSB_cpRatchetJoint_setRatchet(JSContext *cx, uint32_t argc, jsval *vp) {
  1586. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  1587. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1588. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1589. cpRatchetJoint* arg0 = (cpRatchetJoint*) proxy->handle;
  1590. jsval *argvp = JS_ARGV(cx,vp);
  1591. JSBool ok = JS_TRUE;
  1592. double arg1;
  1593. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  1594. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  1595. cpRatchetJointSetRatchet((cpConstraint*)arg0 , (cpFloat)arg1 );
  1596. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  1597. return JS_TRUE;
  1598. }
  1599. void JSB_cpRatchetJoint_createClass(JSContext *cx, JSObject* globalObj, const char* name )
  1600. {
  1601. JSB_cpRatchetJoint_class = (JSClass *)calloc(1, sizeof(JSClass));
  1602. JSB_cpRatchetJoint_class->name = name;
  1603. JSB_cpRatchetJoint_class->addProperty = JS_PropertyStub;
  1604. JSB_cpRatchetJoint_class->delProperty = JS_DeletePropertyStub;
  1605. JSB_cpRatchetJoint_class->getProperty = JS_PropertyStub;
  1606. JSB_cpRatchetJoint_class->setProperty = JS_StrictPropertyStub;
  1607. JSB_cpRatchetJoint_class->enumerate = JS_EnumerateStub;
  1608. JSB_cpRatchetJoint_class->resolve = JS_ResolveStub;
  1609. JSB_cpRatchetJoint_class->convert = JS_ConvertStub;
  1610. JSB_cpRatchetJoint_class->finalize = JSB_cpRatchetJoint_finalize;
  1611. JSB_cpRatchetJoint_class->flags = JSCLASS_HAS_PRIVATE;
  1612. static JSPropertySpec properties[] = {
  1613. {0, 0, 0, 0, 0}
  1614. };
  1615. static JSFunctionSpec funcs[] = {
  1616. JS_FN("getAngle", JSB_cpRatchetJoint_getAngle, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1617. JS_FN("getPhase", JSB_cpRatchetJoint_getPhase, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1618. JS_FN("getRatchet", JSB_cpRatchetJoint_getRatchet, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1619. JS_FN("setAngle", JSB_cpRatchetJoint_setAngle, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1620. JS_FN("setPhase", JSB_cpRatchetJoint_setPhase, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1621. JS_FN("setRatchet", JSB_cpRatchetJoint_setRatchet, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1622. JS_FS_END
  1623. };
  1624. static JSFunctionSpec st_funcs[] = {
  1625. JS_FS_END
  1626. };
  1627. JSB_cpRatchetJoint_object = JS_InitClass(cx, globalObj, JSB_cpConstraint_object, JSB_cpRatchetJoint_class, JSB_cpRatchetJoint_constructor,0,properties,funcs,NULL,st_funcs);
  1628. JSBool found;
  1629. JS_SetPropertyAttributes(cx, globalObj, name, JSPROP_ENUMERATE | JSPROP_READONLY, &found);
  1630. }
  1631. /*
  1632. * cpRotaryLimitJoint
  1633. */
  1634. #pragma mark - cpRotaryLimitJoint
  1635. JSClass* JSB_cpRotaryLimitJoint_class = NULL;
  1636. JSObject* JSB_cpRotaryLimitJoint_object = NULL;
  1637. // Arguments: cpBody*, cpBody*, cpFloat, cpFloat
  1638. // Constructor
  1639. JSBool JSB_cpRotaryLimitJoint_constructor(JSContext *cx, uint32_t argc, jsval *vp)
  1640. {
  1641. JSB_PRECONDITION2(argc==4, cx, JS_FALSE, "Invalid number of arguments");
  1642. JSObject *jsobj = JS_NewObject(cx, JSB_cpRotaryLimitJoint_class, JSB_cpRotaryLimitJoint_object, NULL);
  1643. jsval *argvp = JS_ARGV(cx,vp);
  1644. JSBool ok = JS_TRUE;
  1645. cpBody* arg0; cpBody* arg1; double arg2; double arg3;
  1646. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg0, NULL );
  1647. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg1, NULL );
  1648. ok &= JS_ValueToNumber( cx, *argvp++, &arg2 );
  1649. ok &= JS_ValueToNumber( cx, *argvp++, &arg3 );
  1650. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  1651. void* ret_val = cpRotaryLimitJointNew((cpBody*)arg0 , (cpBody*)arg1 , (cpFloat)arg2 , (cpFloat)arg3 );
  1652. jsb_set_jsobject_for_proxy(jsobj, ret_val);
  1653. jsb_set_c_proxy_for_jsobject(jsobj, ret_val, JSB_C_FLAG_CALL_FREE);
  1654. JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(jsobj));
  1655. return JS_TRUE;
  1656. }
  1657. // Destructor
  1658. void JSB_cpRotaryLimitJoint_finalize(JSFreeOp *fop, JSObject *jsthis)
  1659. {
  1660. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1661. if( proxy ) {
  1662. CCLOGINFO("jsbindings: finalizing JS object %p (cpRotaryLimitJoint), handle: %p", jsthis, proxy->handle);
  1663. jsb_del_jsobject_for_proxy(proxy->handle);
  1664. if(proxy->flags == JSB_C_FLAG_CALL_FREE)
  1665. cpConstraintFree( (cpConstraint*)proxy->handle);
  1666. jsb_del_c_proxy_for_jsobject(jsthis);
  1667. } else {
  1668. CCLOGINFO("jsbindings: finalizing uninitialized JS object %p (cpRotaryLimitJoint)", jsthis);
  1669. }
  1670. }
  1671. // Arguments:
  1672. // Ret value: cpFloat
  1673. JSBool JSB_cpRotaryLimitJoint_getMax(JSContext *cx, uint32_t argc, jsval *vp) {
  1674. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  1675. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1676. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1677. cpRotaryLimitJoint* arg0 = (cpRotaryLimitJoint*) proxy->handle;
  1678. cpFloat ret_val;
  1679. ret_val = cpRotaryLimitJointGetMax((cpConstraint*)arg0 );
  1680. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  1681. return JS_TRUE;
  1682. }
  1683. // Arguments:
  1684. // Ret value: cpFloat
  1685. JSBool JSB_cpRotaryLimitJoint_getMin(JSContext *cx, uint32_t argc, jsval *vp) {
  1686. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  1687. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1688. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1689. cpRotaryLimitJoint* arg0 = (cpRotaryLimitJoint*) proxy->handle;
  1690. cpFloat ret_val;
  1691. ret_val = cpRotaryLimitJointGetMin((cpConstraint*)arg0 );
  1692. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  1693. return JS_TRUE;
  1694. }
  1695. // Arguments: cpFloat
  1696. // Ret value: void
  1697. JSBool JSB_cpRotaryLimitJoint_setMax(JSContext *cx, uint32_t argc, jsval *vp) {
  1698. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  1699. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1700. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1701. cpRotaryLimitJoint* arg0 = (cpRotaryLimitJoint*) proxy->handle;
  1702. jsval *argvp = JS_ARGV(cx,vp);
  1703. JSBool ok = JS_TRUE;
  1704. double arg1;
  1705. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  1706. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  1707. cpRotaryLimitJointSetMax((cpConstraint*)arg0 , (cpFloat)arg1 );
  1708. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  1709. return JS_TRUE;
  1710. }
  1711. // Arguments: cpFloat
  1712. // Ret value: void
  1713. JSBool JSB_cpRotaryLimitJoint_setMin(JSContext *cx, uint32_t argc, jsval *vp) {
  1714. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  1715. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1716. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1717. cpRotaryLimitJoint* arg0 = (cpRotaryLimitJoint*) proxy->handle;
  1718. jsval *argvp = JS_ARGV(cx,vp);
  1719. JSBool ok = JS_TRUE;
  1720. double arg1;
  1721. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  1722. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  1723. cpRotaryLimitJointSetMin((cpConstraint*)arg0 , (cpFloat)arg1 );
  1724. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  1725. return JS_TRUE;
  1726. }
  1727. void JSB_cpRotaryLimitJoint_createClass(JSContext *cx, JSObject* globalObj, const char* name )
  1728. {
  1729. JSB_cpRotaryLimitJoint_class = (JSClass *)calloc(1, sizeof(JSClass));
  1730. JSB_cpRotaryLimitJoint_class->name = name;
  1731. JSB_cpRotaryLimitJoint_class->addProperty = JS_PropertyStub;
  1732. JSB_cpRotaryLimitJoint_class->delProperty = JS_DeletePropertyStub;
  1733. JSB_cpRotaryLimitJoint_class->getProperty = JS_PropertyStub;
  1734. JSB_cpRotaryLimitJoint_class->setProperty = JS_StrictPropertyStub;
  1735. JSB_cpRotaryLimitJoint_class->enumerate = JS_EnumerateStub;
  1736. JSB_cpRotaryLimitJoint_class->resolve = JS_ResolveStub;
  1737. JSB_cpRotaryLimitJoint_class->convert = JS_ConvertStub;
  1738. JSB_cpRotaryLimitJoint_class->finalize = JSB_cpRotaryLimitJoint_finalize;
  1739. JSB_cpRotaryLimitJoint_class->flags = JSCLASS_HAS_PRIVATE;
  1740. static JSPropertySpec properties[] = {
  1741. {0, 0, 0, 0, 0}
  1742. };
  1743. static JSFunctionSpec funcs[] = {
  1744. JS_FN("getMax", JSB_cpRotaryLimitJoint_getMax, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1745. JS_FN("getMin", JSB_cpRotaryLimitJoint_getMin, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1746. JS_FN("setMax", JSB_cpRotaryLimitJoint_setMax, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1747. JS_FN("setMin", JSB_cpRotaryLimitJoint_setMin, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  1748. JS_FS_END
  1749. };
  1750. static JSFunctionSpec st_funcs[] = {
  1751. JS_FS_END
  1752. };
  1753. JSB_cpRotaryLimitJoint_object = JS_InitClass(cx, globalObj, JSB_cpConstraint_object, JSB_cpRotaryLimitJoint_class, JSB_cpRotaryLimitJoint_constructor,0,properties,funcs,NULL,st_funcs);
  1754. JSBool found;
  1755. JS_SetPropertyAttributes(cx, globalObj, name, JSPROP_ENUMERATE | JSPROP_READONLY, &found);
  1756. }
  1757. /*
  1758. * cpArbiter
  1759. */
  1760. #pragma mark - cpArbiter
  1761. JSClass* JSB_cpArbiter_class = NULL;
  1762. JSObject* JSB_cpArbiter_object = NULL;
  1763. // Constructor
  1764. JSBool JSB_cpArbiter_constructor(JSContext *cx, uint32_t argc, jsval *vp)
  1765. {
  1766. JSB_PRECONDITION2(argc==0, cx, JS_FALSE, "Invalid number of arguments");
  1767. JSB_PRECONDITION2(false, cx, JS_TRUE, "No constructor");
  1768. return JS_TRUE;
  1769. }
  1770. // Destructor
  1771. void JSB_cpArbiter_finalize(JSFreeOp *fop, JSObject *jsthis)
  1772. {
  1773. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1774. if( proxy ) {
  1775. CCLOGINFO("jsbindings: finalizing JS object %p (cpArbiter), handle: %p", jsthis, proxy->handle);
  1776. jsb_del_jsobject_for_proxy(proxy->handle);
  1777. if(proxy->flags == JSB_C_FLAG_CALL_FREE)
  1778. // No destructor found: ( (None*)proxy->handle);
  1779. jsb_del_c_proxy_for_jsobject(jsthis);
  1780. } else {
  1781. CCLOGINFO("jsbindings: finalizing uninitialized JS object %p (cpArbiter)", jsthis);
  1782. }
  1783. }
  1784. // Arguments:
  1785. // Ret value: int
  1786. JSBool JSB_cpArbiter_getCount(JSContext *cx, uint32_t argc, jsval *vp) {
  1787. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  1788. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1789. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1790. cpArbiter* arg0 = (cpArbiter*) proxy->handle;
  1791. int ret_val;
  1792. ret_val = cpArbiterGetCount((cpArbiter*)arg0 );
  1793. JS_SET_RVAL(cx, vp, INT_TO_JSVAL((int32_t)ret_val));
  1794. return JS_TRUE;
  1795. }
  1796. // Arguments: int
  1797. // Ret value: cpFloat
  1798. JSBool JSB_cpArbiter_getDepth(JSContext *cx, uint32_t argc, jsval *vp) {
  1799. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  1800. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1801. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1802. cpArbiter* arg0 = (cpArbiter*) proxy->handle;
  1803. jsval *argvp = JS_ARGV(cx,vp);
  1804. JSBool ok = JS_TRUE;
  1805. int32_t arg1;
  1806. ok &= jsval_to_int32( cx, *argvp++, &arg1 );
  1807. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  1808. cpFloat ret_val;
  1809. ret_val = cpArbiterGetDepth((cpArbiter*)arg0 , (int)arg1 );
  1810. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  1811. return JS_TRUE;
  1812. }
  1813. // Arguments:
  1814. // Ret value: cpFloat
  1815. JSBool JSB_cpArbiter_getElasticity(JSContext *cx, uint32_t argc, jsval *vp) {
  1816. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  1817. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1818. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1819. cpArbiter* arg0 = (cpArbiter*) proxy->handle;
  1820. cpFloat ret_val;
  1821. ret_val = cpArbiterGetElasticity((cpArbiter*)arg0 );
  1822. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  1823. return JS_TRUE;
  1824. }
  1825. // Arguments:
  1826. // Ret value: cpFloat
  1827. JSBool JSB_cpArbiter_getFriction(JSContext *cx, uint32_t argc, jsval *vp) {
  1828. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  1829. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1830. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1831. cpArbiter* arg0 = (cpArbiter*) proxy->handle;
  1832. cpFloat ret_val;
  1833. ret_val = cpArbiterGetFriction((cpArbiter*)arg0 );
  1834. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  1835. return JS_TRUE;
  1836. }
  1837. // Arguments: int
  1838. // Ret value: cpVect
  1839. JSBool JSB_cpArbiter_getNormal(JSContext *cx, uint32_t argc, jsval *vp) {
  1840. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  1841. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1842. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1843. cpArbiter* arg0 = (cpArbiter*) proxy->handle;
  1844. jsval *argvp = JS_ARGV(cx,vp);
  1845. JSBool ok = JS_TRUE;
  1846. int32_t arg1;
  1847. ok &= jsval_to_int32( cx, *argvp++, &arg1 );
  1848. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  1849. cpVect ret_val;
  1850. ret_val = cpArbiterGetNormal((cpArbiter*)arg0 , (int)arg1 );
  1851. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  1852. JS_SET_RVAL(cx, vp, ret_jsval);
  1853. return JS_TRUE;
  1854. }
  1855. // Arguments: int
  1856. // Ret value: cpVect
  1857. JSBool JSB_cpArbiter_getPoint(JSContext *cx, uint32_t argc, jsval *vp) {
  1858. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  1859. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1860. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1861. cpArbiter* arg0 = (cpArbiter*) proxy->handle;
  1862. jsval *argvp = JS_ARGV(cx,vp);
  1863. JSBool ok = JS_TRUE;
  1864. int32_t arg1;
  1865. ok &= jsval_to_int32( cx, *argvp++, &arg1 );
  1866. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  1867. cpVect ret_val;
  1868. ret_val = cpArbiterGetPoint((cpArbiter*)arg0 , (int)arg1 );
  1869. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  1870. JS_SET_RVAL(cx, vp, ret_jsval);
  1871. return JS_TRUE;
  1872. }
  1873. // Arguments:
  1874. // Ret value: cpVect
  1875. JSBool JSB_cpArbiter_getSurfaceVelocity(JSContext *cx, uint32_t argc, jsval *vp) {
  1876. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  1877. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1878. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1879. cpArbiter* arg0 = (cpArbiter*) proxy->handle;
  1880. cpVect ret_val;
  1881. ret_val = cpArbiterGetSurfaceVelocity((cpArbiter*)arg0 );
  1882. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  1883. JS_SET_RVAL(cx, vp, ret_jsval);
  1884. return JS_TRUE;
  1885. }
  1886. // Arguments:
  1887. // Ret value: void
  1888. JSBool JSB_cpArbiter_ignore(JSContext *cx, uint32_t argc, jsval *vp) {
  1889. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  1890. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1891. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1892. cpArbiter* arg0 = (cpArbiter*) proxy->handle;
  1893. cpArbiterIgnore((cpArbiter*)arg0 );
  1894. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  1895. return JS_TRUE;
  1896. }
  1897. // Arguments:
  1898. // Ret value: cpBool
  1899. JSBool JSB_cpArbiter_isFirstContact(JSContext *cx, uint32_t argc, jsval *vp) {
  1900. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  1901. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1902. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1903. cpArbiter* arg0 = (cpArbiter*) proxy->handle;
  1904. cpBool ret_val;
  1905. ret_val = cpArbiterIsFirstContact((cpArbiter*)arg0 );
  1906. JS_SET_RVAL(cx, vp, INT_TO_JSVAL((int32_t)ret_val));
  1907. return JS_TRUE;
  1908. }
  1909. // Arguments: cpFloat
  1910. // Ret value: void
  1911. JSBool JSB_cpArbiter_setElasticity(JSContext *cx, uint32_t argc, jsval *vp) {
  1912. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  1913. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1914. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1915. cpArbiter* arg0 = (cpArbiter*) proxy->handle;
  1916. jsval *argvp = JS_ARGV(cx,vp);
  1917. JSBool ok = JS_TRUE;
  1918. double arg1;
  1919. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  1920. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  1921. cpArbiterSetElasticity((cpArbiter*)arg0 , (cpFloat)arg1 );
  1922. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  1923. return JS_TRUE;
  1924. }
  1925. // Arguments: cpFloat
  1926. // Ret value: void
  1927. JSBool JSB_cpArbiter_setFriction(JSContext *cx, uint32_t argc, jsval *vp) {
  1928. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  1929. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1930. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1931. cpArbiter* arg0 = (cpArbiter*) proxy->handle;
  1932. jsval *argvp = JS_ARGV(cx,vp);
  1933. JSBool ok = JS_TRUE;
  1934. double arg1;
  1935. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  1936. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  1937. cpArbiterSetFriction((cpArbiter*)arg0 , (cpFloat)arg1 );
  1938. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  1939. return JS_TRUE;
  1940. }
  1941. // Arguments: cpVect
  1942. // Ret value: void
  1943. JSBool JSB_cpArbiter_setSurfaceVelocity(JSContext *cx, uint32_t argc, jsval *vp) {
  1944. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  1945. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1946. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1947. cpArbiter* arg0 = (cpArbiter*) proxy->handle;
  1948. jsval *argvp = JS_ARGV(cx,vp);
  1949. JSBool ok = JS_TRUE;
  1950. cpVect arg1;
  1951. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg1 );
  1952. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  1953. cpArbiterSetSurfaceVelocity((cpArbiter*)arg0 , (cpVect)arg1 );
  1954. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  1955. return JS_TRUE;
  1956. }
  1957. // Arguments:
  1958. // Ret value: cpVect
  1959. JSBool JSB_cpArbiter_totalImpulse(JSContext *cx, uint32_t argc, jsval *vp) {
  1960. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  1961. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1962. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1963. cpArbiter* arg0 = (cpArbiter*) proxy->handle;
  1964. cpVect ret_val;
  1965. ret_val = cpArbiterTotalImpulse((cpArbiter*)arg0 );
  1966. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  1967. JS_SET_RVAL(cx, vp, ret_jsval);
  1968. return JS_TRUE;
  1969. }
  1970. // Arguments:
  1971. // Ret value: cpVect
  1972. JSBool JSB_cpArbiter_totalImpulseWithFriction(JSContext *cx, uint32_t argc, jsval *vp) {
  1973. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  1974. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1975. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1976. cpArbiter* arg0 = (cpArbiter*) proxy->handle;
  1977. cpVect ret_val;
  1978. ret_val = cpArbiterTotalImpulseWithFriction((cpArbiter*)arg0 );
  1979. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  1980. JS_SET_RVAL(cx, vp, ret_jsval);
  1981. return JS_TRUE;
  1982. }
  1983. // Arguments:
  1984. // Ret value: cpFloat
  1985. JSBool JSB_cpArbiter_totalKE(JSContext *cx, uint32_t argc, jsval *vp) {
  1986. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  1987. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  1988. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  1989. cpArbiter* arg0 = (cpArbiter*) proxy->handle;
  1990. cpFloat ret_val;
  1991. ret_val = cpArbiterTotalKE((cpArbiter*)arg0 );
  1992. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  1993. return JS_TRUE;
  1994. }
  1995. void JSB_cpArbiter_createClass(JSContext *cx, JSObject* globalObj, const char* name )
  1996. {
  1997. JSB_cpArbiter_class = (JSClass *)calloc(1, sizeof(JSClass));
  1998. JSB_cpArbiter_class->name = name;
  1999. JSB_cpArbiter_class->addProperty = JS_PropertyStub;
  2000. JSB_cpArbiter_class->delProperty = JS_DeletePropertyStub;
  2001. JSB_cpArbiter_class->getProperty = JS_PropertyStub;
  2002. JSB_cpArbiter_class->setProperty = JS_StrictPropertyStub;
  2003. JSB_cpArbiter_class->enumerate = JS_EnumerateStub;
  2004. JSB_cpArbiter_class->resolve = JS_ResolveStub;
  2005. JSB_cpArbiter_class->convert = JS_ConvertStub;
  2006. JSB_cpArbiter_class->finalize = JSB_cpArbiter_finalize;
  2007. JSB_cpArbiter_class->flags = JSCLASS_HAS_PRIVATE;
  2008. static JSPropertySpec properties[] = {
  2009. {0, 0, 0, 0, 0}
  2010. };
  2011. static JSFunctionSpec funcs[] = {
  2012. JS_FN("getCount", JSB_cpArbiter_getCount, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2013. JS_FN("getDepth", JSB_cpArbiter_getDepth, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2014. JS_FN("getElasticity", JSB_cpArbiter_getElasticity, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2015. JS_FN("getFriction", JSB_cpArbiter_getFriction, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2016. JS_FN("getNormal", JSB_cpArbiter_getNormal, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2017. JS_FN("getPoint", JSB_cpArbiter_getPoint, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2018. JS_FN("getSurfaceVelocity", JSB_cpArbiter_getSurfaceVelocity, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2019. JS_FN("ignore", JSB_cpArbiter_ignore, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2020. JS_FN("isFirstContact", JSB_cpArbiter_isFirstContact, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2021. JS_FN("setElasticity", JSB_cpArbiter_setElasticity, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2022. JS_FN("setFriction", JSB_cpArbiter_setFriction, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2023. JS_FN("setSurfaceVelocity", JSB_cpArbiter_setSurfaceVelocity, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2024. JS_FN("totalImpulse", JSB_cpArbiter_totalImpulse, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2025. JS_FN("totalImpulseWithFriction", JSB_cpArbiter_totalImpulseWithFriction, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2026. JS_FN("totalKE", JSB_cpArbiter_totalKE, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2027. JS_FN("getShapes", JSB_cpArbiter_getShapes, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2028. JS_FN("getBodies", JSB_cpArbiter_getBodies, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2029. JS_FS_END
  2030. };
  2031. static JSFunctionSpec st_funcs[] = {
  2032. JS_FS_END
  2033. };
  2034. JSB_cpArbiter_object = JS_InitClass(cx, globalObj, JSB_cpBase_object, JSB_cpArbiter_class, JSB_cpArbiter_constructor,0,properties,funcs,NULL,st_funcs);
  2035. JSBool found;
  2036. JS_SetPropertyAttributes(cx, globalObj, name, JSPROP_ENUMERATE | JSPROP_READONLY, &found);
  2037. }
  2038. /*
  2039. * cpSpace
  2040. */
  2041. #pragma mark - cpSpace
  2042. JSClass* JSB_cpSpace_class = NULL;
  2043. JSObject* JSB_cpSpace_object = NULL;
  2044. // Arguments:
  2045. // Constructor
  2046. JSBool JSB_cpSpace_constructor(JSContext *cx, uint32_t argc, jsval *vp)
  2047. {
  2048. JSB_PRECONDITION2(argc==0, cx, JS_FALSE, "Invalid number of arguments");
  2049. JSObject *jsobj = JS_NewObject(cx, JSB_cpSpace_class, JSB_cpSpace_object, NULL);
  2050. void* ret_val = cpSpaceNew( );
  2051. jsb_set_jsobject_for_proxy(jsobj, ret_val);
  2052. jsb_set_c_proxy_for_jsobject(jsobj, ret_val, JSB_C_FLAG_CALL_FREE);
  2053. JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(jsobj));
  2054. return JS_TRUE;
  2055. }
  2056. // Arguments: cpShape*
  2057. // Ret value: void
  2058. JSBool JSB_cpSpace_activateShapesTouchingShape(JSContext *cx, uint32_t argc, jsval *vp) {
  2059. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  2060. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2061. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2062. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2063. jsval *argvp = JS_ARGV(cx,vp);
  2064. JSBool ok = JS_TRUE;
  2065. cpShape* arg1;
  2066. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg1, NULL );
  2067. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  2068. cpSpaceActivateShapesTouchingShape((cpSpace*)arg0 , (cpShape*)arg1 );
  2069. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  2070. return JS_TRUE;
  2071. }
  2072. // Arguments: cpBody*
  2073. // Ret value: cpBool
  2074. JSBool JSB_cpSpace_containsBody(JSContext *cx, uint32_t argc, jsval *vp) {
  2075. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  2076. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2077. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2078. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2079. jsval *argvp = JS_ARGV(cx,vp);
  2080. JSBool ok = JS_TRUE;
  2081. cpBody* arg1;
  2082. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg1, NULL );
  2083. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  2084. cpBool ret_val;
  2085. ret_val = cpSpaceContainsBody((cpSpace*)arg0 , (cpBody*)arg1 );
  2086. JS_SET_RVAL(cx, vp, INT_TO_JSVAL((int32_t)ret_val));
  2087. return JS_TRUE;
  2088. }
  2089. // Arguments: cpConstraint*
  2090. // Ret value: cpBool
  2091. JSBool JSB_cpSpace_containsConstraint(JSContext *cx, uint32_t argc, jsval *vp) {
  2092. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  2093. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2094. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2095. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2096. jsval *argvp = JS_ARGV(cx,vp);
  2097. JSBool ok = JS_TRUE;
  2098. cpConstraint* arg1;
  2099. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg1, NULL );
  2100. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  2101. cpBool ret_val;
  2102. ret_val = cpSpaceContainsConstraint((cpSpace*)arg0 , (cpConstraint*)arg1 );
  2103. JS_SET_RVAL(cx, vp, INT_TO_JSVAL((int32_t)ret_val));
  2104. return JS_TRUE;
  2105. }
  2106. // Arguments: cpShape*
  2107. // Ret value: cpBool
  2108. JSBool JSB_cpSpace_containsShape(JSContext *cx, uint32_t argc, jsval *vp) {
  2109. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  2110. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2111. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2112. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2113. jsval *argvp = JS_ARGV(cx,vp);
  2114. JSBool ok = JS_TRUE;
  2115. cpShape* arg1;
  2116. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg1, NULL );
  2117. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  2118. cpBool ret_val;
  2119. ret_val = cpSpaceContainsShape((cpSpace*)arg0 , (cpShape*)arg1 );
  2120. JS_SET_RVAL(cx, vp, INT_TO_JSVAL((int32_t)ret_val));
  2121. return JS_TRUE;
  2122. }
  2123. // Arguments:
  2124. // Ret value: void
  2125. JSBool JSB_cpSpace_destroy(JSContext *cx, uint32_t argc, jsval *vp) {
  2126. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2127. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2128. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2129. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2130. cpSpaceDestroy((cpSpace*)arg0 );
  2131. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  2132. return JS_TRUE;
  2133. }
  2134. // Arguments:
  2135. // Ret value: cpFloat
  2136. JSBool JSB_cpSpace_getCollisionBias(JSContext *cx, uint32_t argc, jsval *vp) {
  2137. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2138. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2139. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2140. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2141. cpFloat ret_val;
  2142. ret_val = cpSpaceGetCollisionBias((cpSpace*)arg0 );
  2143. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  2144. return JS_TRUE;
  2145. }
  2146. // Arguments:
  2147. // Ret value: cpTimestamp
  2148. JSBool JSB_cpSpace_getCollisionPersistence(JSContext *cx, uint32_t argc, jsval *vp) {
  2149. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2150. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2151. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2152. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2153. cpTimestamp ret_val;
  2154. ret_val = cpSpaceGetCollisionPersistence((cpSpace*)arg0 );
  2155. JS_SET_RVAL(cx, vp, UINT_TO_JSVAL((uint32_t)ret_val));
  2156. return JS_TRUE;
  2157. }
  2158. // Arguments:
  2159. // Ret value: cpFloat
  2160. JSBool JSB_cpSpace_getCollisionSlop(JSContext *cx, uint32_t argc, jsval *vp) {
  2161. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2162. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2163. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2164. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2165. cpFloat ret_val;
  2166. ret_val = cpSpaceGetCollisionSlop((cpSpace*)arg0 );
  2167. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  2168. return JS_TRUE;
  2169. }
  2170. // Arguments:
  2171. // Ret value: cpFloat
  2172. JSBool JSB_cpSpace_getCurrentTimeStep(JSContext *cx, uint32_t argc, jsval *vp) {
  2173. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2174. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2175. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2176. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2177. cpFloat ret_val;
  2178. ret_val = cpSpaceGetCurrentTimeStep((cpSpace*)arg0 );
  2179. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  2180. return JS_TRUE;
  2181. }
  2182. // Arguments:
  2183. // Ret value: cpFloat
  2184. JSBool JSB_cpSpace_getDamping(JSContext *cx, uint32_t argc, jsval *vp) {
  2185. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2186. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2187. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2188. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2189. cpFloat ret_val;
  2190. ret_val = cpSpaceGetDamping((cpSpace*)arg0 );
  2191. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  2192. return JS_TRUE;
  2193. }
  2194. // Arguments:
  2195. // Ret value: cpBool
  2196. JSBool JSB_cpSpace_getEnableContactGraph(JSContext *cx, uint32_t argc, jsval *vp) {
  2197. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2198. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2199. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2200. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2201. cpBool ret_val;
  2202. ret_val = cpSpaceGetEnableContactGraph((cpSpace*)arg0 );
  2203. JS_SET_RVAL(cx, vp, INT_TO_JSVAL((int32_t)ret_val));
  2204. return JS_TRUE;
  2205. }
  2206. // Arguments:
  2207. // Ret value: cpVect
  2208. JSBool JSB_cpSpace_getGravity(JSContext *cx, uint32_t argc, jsval *vp) {
  2209. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2210. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2211. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2212. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2213. cpVect ret_val;
  2214. ret_val = cpSpaceGetGravity((cpSpace*)arg0 );
  2215. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  2216. JS_SET_RVAL(cx, vp, ret_jsval);
  2217. return JS_TRUE;
  2218. }
  2219. // Arguments:
  2220. // Ret value: cpFloat
  2221. JSBool JSB_cpSpace_getIdleSpeedThreshold(JSContext *cx, uint32_t argc, jsval *vp) {
  2222. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2223. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2224. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2225. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2226. cpFloat ret_val;
  2227. ret_val = cpSpaceGetIdleSpeedThreshold((cpSpace*)arg0 );
  2228. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  2229. return JS_TRUE;
  2230. }
  2231. // Arguments:
  2232. // Ret value: int
  2233. JSBool JSB_cpSpace_getIterations(JSContext *cx, uint32_t argc, jsval *vp) {
  2234. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2235. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2236. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2237. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2238. int ret_val;
  2239. ret_val = cpSpaceGetIterations((cpSpace*)arg0 );
  2240. JS_SET_RVAL(cx, vp, INT_TO_JSVAL((int32_t)ret_val));
  2241. return JS_TRUE;
  2242. }
  2243. // Arguments:
  2244. // Ret value: cpFloat
  2245. JSBool JSB_cpSpace_getSleepTimeThreshold(JSContext *cx, uint32_t argc, jsval *vp) {
  2246. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2247. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2248. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2249. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2250. cpFloat ret_val;
  2251. ret_val = cpSpaceGetSleepTimeThreshold((cpSpace*)arg0 );
  2252. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  2253. return JS_TRUE;
  2254. }
  2255. // Arguments:
  2256. // Ret value: cpBody*
  2257. JSBool JSB_cpSpace_getStaticBody(JSContext *cx, uint32_t argc, jsval *vp) {
  2258. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2259. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2260. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2261. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2262. cpBody* ret_val;
  2263. ret_val = cpSpaceGetStaticBody((cpSpace*)arg0 );
  2264. jsval ret_jsval = c_class_to_jsval( cx, ret_val, JSB_cpBody_object, JSB_cpBody_class, "cpBody" );
  2265. JS_SET_RVAL(cx, vp, ret_jsval);
  2266. return JS_TRUE;
  2267. }
  2268. // Arguments:
  2269. // Ret value: cpSpace*
  2270. JSBool JSB_cpSpace_init(JSContext *cx, uint32_t argc, jsval *vp) {
  2271. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2272. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2273. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2274. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2275. cpSpace* ret_val;
  2276. ret_val = cpSpaceInit((cpSpace*)arg0 );
  2277. jsval ret_jsval = c_class_to_jsval( cx, ret_val, JSB_cpSpace_object, JSB_cpSpace_class, "cpSpace" );
  2278. JS_SET_RVAL(cx, vp, ret_jsval);
  2279. return JS_TRUE;
  2280. }
  2281. // Arguments:
  2282. // Ret value: cpBool
  2283. JSBool JSB_cpSpace_isLocked(JSContext *cx, uint32_t argc, jsval *vp) {
  2284. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2285. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2286. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2287. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2288. cpBool ret_val;
  2289. ret_val = cpSpaceIsLocked((cpSpace*)arg0 );
  2290. JS_SET_RVAL(cx, vp, INT_TO_JSVAL((int32_t)ret_val));
  2291. return JS_TRUE;
  2292. }
  2293. // Arguments: cpVect, cpLayers, cpGroup
  2294. // Ret value: cpShape*
  2295. JSBool JSB_cpSpace_pointQueryFirst(JSContext *cx, uint32_t argc, jsval *vp) {
  2296. JSB_PRECONDITION2( argc == 3, cx, JS_FALSE, "Invalid number of arguments" );
  2297. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2298. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2299. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2300. jsval *argvp = JS_ARGV(cx,vp);
  2301. JSBool ok = JS_TRUE;
  2302. cpVect arg1; uint32_t arg2; cpGroup arg3;
  2303. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg1 );
  2304. ok &= jsval_to_uint32( cx, *argvp++, &arg2 );
  2305. ok &= jsval_to_uint( cx, *argvp++, (unsigned int*) &arg3 );
  2306. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  2307. cpShape* ret_val;
  2308. ret_val = cpSpacePointQueryFirst((cpSpace*)arg0 , (cpVect)arg1 , (cpLayers)arg2 , (cpGroup)arg3 );
  2309. if(ret_val) {
  2310. jsval ret_jsval = c_class_to_jsval( cx, ret_val, JSB_cpShape_object, JSB_cpShape_class, "cpShape" );
  2311. JS_SET_RVAL(cx, vp, ret_jsval);
  2312. } else {
  2313. JS_SET_RVAL(cx, vp, JSVAL_NULL);
  2314. }
  2315. return JS_TRUE;
  2316. }
  2317. // Arguments: cpShape*
  2318. // Ret value: void
  2319. JSBool JSB_cpSpace_reindexShape(JSContext *cx, uint32_t argc, jsval *vp) {
  2320. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  2321. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2322. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2323. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2324. jsval *argvp = JS_ARGV(cx,vp);
  2325. JSBool ok = JS_TRUE;
  2326. cpShape* arg1;
  2327. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg1, NULL );
  2328. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  2329. cpSpaceReindexShape((cpSpace*)arg0 , (cpShape*)arg1 );
  2330. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  2331. return JS_TRUE;
  2332. }
  2333. // Arguments: cpBody*
  2334. // Ret value: void
  2335. JSBool JSB_cpSpace_reindexShapesForBody(JSContext *cx, uint32_t argc, jsval *vp) {
  2336. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  2337. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2338. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2339. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2340. jsval *argvp = JS_ARGV(cx,vp);
  2341. JSBool ok = JS_TRUE;
  2342. cpBody* arg1;
  2343. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg1, NULL );
  2344. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  2345. cpSpaceReindexShapesForBody((cpSpace*)arg0 , (cpBody*)arg1 );
  2346. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  2347. return JS_TRUE;
  2348. }
  2349. // Arguments:
  2350. // Ret value: void
  2351. JSBool JSB_cpSpace_reindexStatic(JSContext *cx, uint32_t argc, jsval *vp) {
  2352. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2353. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2354. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2355. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2356. cpSpaceReindexStatic((cpSpace*)arg0 );
  2357. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  2358. return JS_TRUE;
  2359. }
  2360. // Arguments: cpFloat
  2361. // Ret value: void
  2362. JSBool JSB_cpSpace_setCollisionBias(JSContext *cx, uint32_t argc, jsval *vp) {
  2363. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  2364. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2365. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2366. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2367. jsval *argvp = JS_ARGV(cx,vp);
  2368. JSBool ok = JS_TRUE;
  2369. double arg1;
  2370. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  2371. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  2372. cpSpaceSetCollisionBias((cpSpace*)arg0 , (cpFloat)arg1 );
  2373. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  2374. return JS_TRUE;
  2375. }
  2376. // Arguments: cpTimestamp
  2377. // Ret value: void
  2378. JSBool JSB_cpSpace_setCollisionPersistence(JSContext *cx, uint32_t argc, jsval *vp) {
  2379. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  2380. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2381. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2382. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2383. jsval *argvp = JS_ARGV(cx,vp);
  2384. JSBool ok = JS_TRUE;
  2385. uint32_t arg1;
  2386. ok &= jsval_to_uint32( cx, *argvp++, &arg1 );
  2387. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  2388. cpSpaceSetCollisionPersistence((cpSpace*)arg0 , (cpTimestamp)arg1 );
  2389. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  2390. return JS_TRUE;
  2391. }
  2392. // Arguments: cpFloat
  2393. // Ret value: void
  2394. JSBool JSB_cpSpace_setCollisionSlop(JSContext *cx, uint32_t argc, jsval *vp) {
  2395. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  2396. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2397. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2398. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2399. jsval *argvp = JS_ARGV(cx,vp);
  2400. JSBool ok = JS_TRUE;
  2401. double arg1;
  2402. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  2403. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  2404. cpSpaceSetCollisionSlop((cpSpace*)arg0 , (cpFloat)arg1 );
  2405. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  2406. return JS_TRUE;
  2407. }
  2408. // Arguments: cpFloat
  2409. // Ret value: void
  2410. JSBool JSB_cpSpace_setDamping(JSContext *cx, uint32_t argc, jsval *vp) {
  2411. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  2412. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2413. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2414. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2415. jsval *argvp = JS_ARGV(cx,vp);
  2416. JSBool ok = JS_TRUE;
  2417. double arg1;
  2418. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  2419. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  2420. cpSpaceSetDamping((cpSpace*)arg0 , (cpFloat)arg1 );
  2421. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  2422. return JS_TRUE;
  2423. }
  2424. // Arguments: cpBool
  2425. // Ret value: void
  2426. JSBool JSB_cpSpace_setEnableContactGraph(JSContext *cx, uint32_t argc, jsval *vp) {
  2427. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  2428. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2429. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2430. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2431. jsval *argvp = JS_ARGV(cx,vp);
  2432. JSBool ok = JS_TRUE;
  2433. int32_t arg1;
  2434. ok &= jsval_to_int32( cx, *argvp++, &arg1 );
  2435. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  2436. cpSpaceSetEnableContactGraph((cpSpace*)arg0 , (cpBool)arg1 );
  2437. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  2438. return JS_TRUE;
  2439. }
  2440. // Arguments: cpVect
  2441. // Ret value: void
  2442. JSBool JSB_cpSpace_setGravity(JSContext *cx, uint32_t argc, jsval *vp) {
  2443. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  2444. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2445. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2446. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2447. jsval *argvp = JS_ARGV(cx,vp);
  2448. JSBool ok = JS_TRUE;
  2449. cpVect arg1;
  2450. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg1 );
  2451. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  2452. cpSpaceSetGravity((cpSpace*)arg0 , (cpVect)arg1 );
  2453. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  2454. return JS_TRUE;
  2455. }
  2456. // Arguments: cpFloat
  2457. // Ret value: void
  2458. JSBool JSB_cpSpace_setIdleSpeedThreshold(JSContext *cx, uint32_t argc, jsval *vp) {
  2459. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  2460. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2461. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2462. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2463. jsval *argvp = JS_ARGV(cx,vp);
  2464. JSBool ok = JS_TRUE;
  2465. double arg1;
  2466. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  2467. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  2468. cpSpaceSetIdleSpeedThreshold((cpSpace*)arg0 , (cpFloat)arg1 );
  2469. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  2470. return JS_TRUE;
  2471. }
  2472. // Arguments: int
  2473. // Ret value: void
  2474. JSBool JSB_cpSpace_setIterations(JSContext *cx, uint32_t argc, jsval *vp) {
  2475. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  2476. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2477. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2478. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2479. jsval *argvp = JS_ARGV(cx,vp);
  2480. JSBool ok = JS_TRUE;
  2481. int32_t arg1;
  2482. ok &= jsval_to_int32( cx, *argvp++, &arg1 );
  2483. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  2484. cpSpaceSetIterations((cpSpace*)arg0 , (int)arg1 );
  2485. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  2486. return JS_TRUE;
  2487. }
  2488. // Arguments: cpFloat
  2489. // Ret value: void
  2490. JSBool JSB_cpSpace_setSleepTimeThreshold(JSContext *cx, uint32_t argc, jsval *vp) {
  2491. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  2492. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2493. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2494. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2495. jsval *argvp = JS_ARGV(cx,vp);
  2496. JSBool ok = JS_TRUE;
  2497. double arg1;
  2498. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  2499. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  2500. cpSpaceSetSleepTimeThreshold((cpSpace*)arg0 , (cpFloat)arg1 );
  2501. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  2502. return JS_TRUE;
  2503. }
  2504. // Arguments: cpFloat
  2505. // Ret value: void
  2506. JSBool JSB_cpSpace_step(JSContext *cx, uint32_t argc, jsval *vp) {
  2507. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  2508. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2509. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2510. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2511. jsval *argvp = JS_ARGV(cx,vp);
  2512. JSBool ok = JS_TRUE;
  2513. double arg1;
  2514. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  2515. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  2516. cpSpaceStep((cpSpace*)arg0 , (cpFloat)arg1 );
  2517. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  2518. return JS_TRUE;
  2519. }
  2520. // Arguments: cpFloat, int
  2521. // Ret value: void
  2522. JSBool JSB_cpSpace_useSpatialHash(JSContext *cx, uint32_t argc, jsval *vp) {
  2523. JSB_PRECONDITION2( argc == 2, cx, JS_FALSE, "Invalid number of arguments" );
  2524. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2525. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2526. cpSpace* arg0 = (cpSpace*) proxy->handle;
  2527. jsval *argvp = JS_ARGV(cx,vp);
  2528. JSBool ok = JS_TRUE;
  2529. double arg1; int32_t arg2;
  2530. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  2531. ok &= jsval_to_int32( cx, *argvp++, &arg2 );
  2532. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  2533. cpSpaceUseSpatialHash((cpSpace*)arg0 , (cpFloat)arg1 , (int)arg2 );
  2534. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  2535. return JS_TRUE;
  2536. }
  2537. void JSB_cpSpace_createClass(JSContext *cx, JSObject* globalObj, const char* name )
  2538. {
  2539. JSB_cpSpace_class = (JSClass *)calloc(1, sizeof(JSClass));
  2540. JSB_cpSpace_class->name = name;
  2541. JSB_cpSpace_class->addProperty = JS_PropertyStub;
  2542. JSB_cpSpace_class->delProperty = JS_DeletePropertyStub;
  2543. JSB_cpSpace_class->getProperty = JS_PropertyStub;
  2544. JSB_cpSpace_class->setProperty = JS_StrictPropertyStub;
  2545. JSB_cpSpace_class->enumerate = JS_EnumerateStub;
  2546. JSB_cpSpace_class->resolve = JS_ResolveStub;
  2547. JSB_cpSpace_class->convert = JS_ConvertStub;
  2548. JSB_cpSpace_class->finalize = JSB_cpSpace_finalize;
  2549. JSB_cpSpace_class->flags = JSCLASS_HAS_PRIVATE;
  2550. static JSPropertySpec properties[] = {
  2551. {0, 0, 0, 0, 0}
  2552. };
  2553. static JSFunctionSpec funcs[] = {
  2554. JS_FN("activateShapesTouchingShape", JSB_cpSpace_activateShapesTouchingShape, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2555. JS_FN("containsBody", JSB_cpSpace_containsBody, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2556. JS_FN("containsConstraint", JSB_cpSpace_containsConstraint, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2557. JS_FN("containsShape", JSB_cpSpace_containsShape, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2558. JS_FN("destroy", JSB_cpSpace_destroy, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2559. JS_FN("getCollisionBias", JSB_cpSpace_getCollisionBias, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2560. JS_FN("getCollisionPersistence", JSB_cpSpace_getCollisionPersistence, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2561. JS_FN("getCollisionSlop", JSB_cpSpace_getCollisionSlop, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2562. JS_FN("getCurrentTimeStep", JSB_cpSpace_getCurrentTimeStep, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2563. JS_FN("getDamping", JSB_cpSpace_getDamping, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2564. JS_FN("getEnableContactGraph", JSB_cpSpace_getEnableContactGraph, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2565. JS_FN("getGravity", JSB_cpSpace_getGravity, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2566. JS_FN("getIdleSpeedThreshold", JSB_cpSpace_getIdleSpeedThreshold, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2567. JS_FN("getIterations", JSB_cpSpace_getIterations, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2568. JS_FN("getSleepTimeThreshold", JSB_cpSpace_getSleepTimeThreshold, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2569. JS_FN("getStaticBody", JSB_cpSpace_getStaticBody, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2570. JS_FN("init", JSB_cpSpace_init, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2571. JS_FN("isLocked", JSB_cpSpace_isLocked, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2572. JS_FN("pointQueryFirst", JSB_cpSpace_pointQueryFirst, 3, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2573. JS_FN("reindexShape", JSB_cpSpace_reindexShape, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2574. JS_FN("reindexShapesForBody", JSB_cpSpace_reindexShapesForBody, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2575. JS_FN("reindexStatic", JSB_cpSpace_reindexStatic, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2576. JS_FN("setCollisionBias", JSB_cpSpace_setCollisionBias, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2577. JS_FN("setCollisionPersistence", JSB_cpSpace_setCollisionPersistence, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2578. JS_FN("setCollisionSlop", JSB_cpSpace_setCollisionSlop, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2579. JS_FN("setDamping", JSB_cpSpace_setDamping, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2580. JS_FN("setEnableContactGraph", JSB_cpSpace_setEnableContactGraph, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2581. JS_FN("setGravity", JSB_cpSpace_setGravity, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2582. JS_FN("setIdleSpeedThreshold", JSB_cpSpace_setIdleSpeedThreshold, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2583. JS_FN("setIterations", JSB_cpSpace_setIterations, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2584. JS_FN("setSleepTimeThreshold", JSB_cpSpace_setSleepTimeThreshold, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2585. JS_FN("step", JSB_cpSpace_step, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2586. JS_FN("useSpatialHash", JSB_cpSpace_useSpatialHash, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2587. JS_FN("addShape", JSB_cpSpace_addShape, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2588. JS_FN("addCollisionHandler", JSB_cpSpace_addCollisionHandler, 7, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2589. JS_FN("addStaticShape", JSB_cpSpace_addStaticShape, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2590. JS_FN("removeConstraint", JSB_cpSpace_removeConstraint, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2591. JS_FN("removeBody", JSB_cpSpace_removeBody, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2592. JS_FN("removeCollisionHandler", JSB_cpSpace_removeCollisionHandler, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2593. JS_FN("removeStaticShape", JSB_cpSpace_removeStaticShape, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2594. JS_FN("addConstraint", JSB_cpSpace_addConstraint, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2595. JS_FN("addBody", JSB_cpSpace_addBody, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2596. JS_FN("removeShape", JSB_cpSpace_removeShape, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  2597. JS_FS_END
  2598. };
  2599. static JSFunctionSpec st_funcs[] = {
  2600. JS_FS_END
  2601. };
  2602. JSB_cpSpace_object = JS_InitClass(cx, globalObj, JSB_cpBase_object, JSB_cpSpace_class, JSB_cpSpace_constructor,0,properties,funcs,NULL,st_funcs);
  2603. JSBool found;
  2604. JS_SetPropertyAttributes(cx, globalObj, name, JSPROP_ENUMERATE | JSPROP_READONLY, &found);
  2605. }
  2606. /*
  2607. * cpBody
  2608. */
  2609. #pragma mark - cpBody
  2610. JSClass* JSB_cpBody_class = NULL;
  2611. JSObject* JSB_cpBody_object = NULL;
  2612. // Destructor
  2613. void JSB_cpBody_finalize(JSFreeOp *fop, JSObject *jsthis)
  2614. {
  2615. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2616. if( proxy ) {
  2617. CCLOGINFO("jsbindings: finalizing JS object %p (cpBody), handle: %p", jsthis, proxy->handle);
  2618. jsb_del_jsobject_for_proxy(proxy->handle);
  2619. if(proxy->flags == JSB_C_FLAG_CALL_FREE)
  2620. cpBodyFree( (cpBody*)proxy->handle);
  2621. jsb_del_c_proxy_for_jsobject(jsthis);
  2622. } else {
  2623. CCLOGINFO("jsbindings: finalizing uninitialized JS object %p (cpBody)", jsthis);
  2624. }
  2625. }
  2626. // Arguments:
  2627. // Ret value: void
  2628. JSBool JSB_cpBody_activate(JSContext *cx, uint32_t argc, jsval *vp) {
  2629. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2630. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2631. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2632. cpBody* arg0 = (cpBody*) proxy->handle;
  2633. cpBodyActivate((cpBody*)arg0 );
  2634. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  2635. return JS_TRUE;
  2636. }
  2637. // Arguments: cpShape*
  2638. // Ret value: void
  2639. JSBool JSB_cpBody_activateStatic(JSContext *cx, uint32_t argc, jsval *vp) {
  2640. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  2641. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2642. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2643. cpBody* arg0 = (cpBody*) proxy->handle;
  2644. jsval *argvp = JS_ARGV(cx,vp);
  2645. JSBool ok = JS_TRUE;
  2646. cpShape* arg1;
  2647. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg1, NULL );
  2648. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  2649. cpBodyActivateStatic((cpBody*)arg0 , (cpShape*)arg1 );
  2650. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  2651. return JS_TRUE;
  2652. }
  2653. // Arguments: cpVect, cpVect
  2654. // Ret value: void
  2655. JSBool JSB_cpBody_applyForce(JSContext *cx, uint32_t argc, jsval *vp) {
  2656. JSB_PRECONDITION2( argc == 2, cx, JS_FALSE, "Invalid number of arguments" );
  2657. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2658. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2659. cpBody* arg0 = (cpBody*) proxy->handle;
  2660. jsval *argvp = JS_ARGV(cx,vp);
  2661. JSBool ok = JS_TRUE;
  2662. cpVect arg1; cpVect arg2;
  2663. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg1 );
  2664. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg2 );
  2665. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  2666. cpBodyApplyForce((cpBody*)arg0 , (cpVect)arg1 , (cpVect)arg2 );
  2667. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  2668. return JS_TRUE;
  2669. }
  2670. // Arguments: cpVect, cpVect
  2671. // Ret value: void
  2672. JSBool JSB_cpBody_applyImpulse(JSContext *cx, uint32_t argc, jsval *vp) {
  2673. JSB_PRECONDITION2( argc == 2, cx, JS_FALSE, "Invalid number of arguments" );
  2674. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2675. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2676. cpBody* arg0 = (cpBody*) proxy->handle;
  2677. jsval *argvp = JS_ARGV(cx,vp);
  2678. JSBool ok = JS_TRUE;
  2679. cpVect arg1; cpVect arg2;
  2680. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg1 );
  2681. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg2 );
  2682. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  2683. cpBodyApplyImpulse((cpBody*)arg0 , (cpVect)arg1 , (cpVect)arg2 );
  2684. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  2685. return JS_TRUE;
  2686. }
  2687. // Arguments:
  2688. // Ret value: void
  2689. JSBool JSB_cpBody_destroy(JSContext *cx, uint32_t argc, jsval *vp) {
  2690. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2691. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2692. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2693. cpBody* arg0 = (cpBody*) proxy->handle;
  2694. cpBodyDestroy((cpBody*)arg0 );
  2695. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  2696. return JS_TRUE;
  2697. }
  2698. // Arguments:
  2699. // Ret value: cpFloat
  2700. JSBool JSB_cpBody_getAngVel(JSContext *cx, uint32_t argc, jsval *vp) {
  2701. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2702. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2703. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2704. cpBody* arg0 = (cpBody*) proxy->handle;
  2705. cpFloat ret_val;
  2706. ret_val = cpBodyGetAngVel((cpBody*)arg0 );
  2707. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  2708. return JS_TRUE;
  2709. }
  2710. // Arguments:
  2711. // Ret value: cpFloat
  2712. JSBool JSB_cpBody_getAngVelLimit(JSContext *cx, uint32_t argc, jsval *vp) {
  2713. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2714. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2715. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2716. cpBody* arg0 = (cpBody*) proxy->handle;
  2717. cpFloat ret_val;
  2718. ret_val = cpBodyGetAngVelLimit((cpBody*)arg0 );
  2719. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  2720. return JS_TRUE;
  2721. }
  2722. // Arguments:
  2723. // Ret value: cpFloat
  2724. JSBool JSB_cpBody_getAngle(JSContext *cx, uint32_t argc, jsval *vp) {
  2725. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2726. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2727. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2728. cpBody* arg0 = (cpBody*) proxy->handle;
  2729. cpFloat ret_val;
  2730. ret_val = cpBodyGetAngle((cpBody*)arg0 );
  2731. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  2732. return JS_TRUE;
  2733. }
  2734. // Arguments:
  2735. // Ret value: cpVect
  2736. JSBool JSB_cpBody_getForce(JSContext *cx, uint32_t argc, jsval *vp) {
  2737. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2738. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2739. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2740. cpBody* arg0 = (cpBody*) proxy->handle;
  2741. cpVect ret_val;
  2742. ret_val = cpBodyGetForce((cpBody*)arg0 );
  2743. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  2744. JS_SET_RVAL(cx, vp, ret_jsval);
  2745. return JS_TRUE;
  2746. }
  2747. // Arguments:
  2748. // Ret value: cpFloat
  2749. JSBool JSB_cpBody_getMass(JSContext *cx, uint32_t argc, jsval *vp) {
  2750. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2751. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2752. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2753. cpBody* arg0 = (cpBody*) proxy->handle;
  2754. cpFloat ret_val;
  2755. ret_val = cpBodyGetMass((cpBody*)arg0 );
  2756. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  2757. return JS_TRUE;
  2758. }
  2759. // Arguments:
  2760. // Ret value: cpFloat
  2761. JSBool JSB_cpBody_getMoment(JSContext *cx, uint32_t argc, jsval *vp) {
  2762. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2763. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2764. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2765. cpBody* arg0 = (cpBody*) proxy->handle;
  2766. cpFloat ret_val;
  2767. ret_val = cpBodyGetMoment((cpBody*)arg0 );
  2768. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  2769. return JS_TRUE;
  2770. }
  2771. // Arguments:
  2772. // Ret value: cpVect
  2773. JSBool JSB_cpBody_getPos(JSContext *cx, uint32_t argc, jsval *vp) {
  2774. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2775. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2776. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2777. cpBody* arg0 = (cpBody*) proxy->handle;
  2778. cpVect ret_val;
  2779. ret_val = cpBodyGetPos((cpBody*)arg0 );
  2780. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  2781. JS_SET_RVAL(cx, vp, ret_jsval);
  2782. return JS_TRUE;
  2783. }
  2784. // Arguments:
  2785. // Ret value: cpVect
  2786. JSBool JSB_cpBody_getRot(JSContext *cx, uint32_t argc, jsval *vp) {
  2787. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2788. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2789. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2790. cpBody* arg0 = (cpBody*) proxy->handle;
  2791. cpVect ret_val;
  2792. ret_val = cpBodyGetRot((cpBody*)arg0 );
  2793. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  2794. JS_SET_RVAL(cx, vp, ret_jsval);
  2795. return JS_TRUE;
  2796. }
  2797. // Arguments:
  2798. // Ret value: cpSpace*
  2799. JSBool JSB_cpBody_getSpace(JSContext *cx, uint32_t argc, jsval *vp) {
  2800. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2801. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2802. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2803. cpBody* arg0 = (cpBody*) proxy->handle;
  2804. cpSpace* ret_val;
  2805. ret_val = cpBodyGetSpace((cpBody*)arg0 );
  2806. jsval ret_jsval = c_class_to_jsval( cx, ret_val, JSB_cpSpace_object, JSB_cpSpace_class, "cpSpace" );
  2807. JS_SET_RVAL(cx, vp, ret_jsval);
  2808. return JS_TRUE;
  2809. }
  2810. // Arguments:
  2811. // Ret value: cpFloat
  2812. JSBool JSB_cpBody_getTorque(JSContext *cx, uint32_t argc, jsval *vp) {
  2813. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2814. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2815. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2816. cpBody* arg0 = (cpBody*) proxy->handle;
  2817. cpFloat ret_val;
  2818. ret_val = cpBodyGetTorque((cpBody*)arg0 );
  2819. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  2820. return JS_TRUE;
  2821. }
  2822. // Arguments:
  2823. // Ret value: cpVect
  2824. JSBool JSB_cpBody_getVel(JSContext *cx, uint32_t argc, jsval *vp) {
  2825. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2826. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2827. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2828. cpBody* arg0 = (cpBody*) proxy->handle;
  2829. cpVect ret_val;
  2830. ret_val = cpBodyGetVel((cpBody*)arg0 );
  2831. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  2832. JS_SET_RVAL(cx, vp, ret_jsval);
  2833. return JS_TRUE;
  2834. }
  2835. // Arguments: cpVect
  2836. // Ret value: cpVect
  2837. JSBool JSB_cpBody_getVelAtLocalPoint(JSContext *cx, uint32_t argc, jsval *vp) {
  2838. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  2839. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2840. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2841. cpBody* arg0 = (cpBody*) proxy->handle;
  2842. jsval *argvp = JS_ARGV(cx,vp);
  2843. JSBool ok = JS_TRUE;
  2844. cpVect arg1;
  2845. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg1 );
  2846. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  2847. cpVect ret_val;
  2848. ret_val = cpBodyGetVelAtLocalPoint((cpBody*)arg0 , (cpVect)arg1 );
  2849. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  2850. JS_SET_RVAL(cx, vp, ret_jsval);
  2851. return JS_TRUE;
  2852. }
  2853. // Arguments: cpVect
  2854. // Ret value: cpVect
  2855. JSBool JSB_cpBody_getVelAtWorldPoint(JSContext *cx, uint32_t argc, jsval *vp) {
  2856. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  2857. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2858. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2859. cpBody* arg0 = (cpBody*) proxy->handle;
  2860. jsval *argvp = JS_ARGV(cx,vp);
  2861. JSBool ok = JS_TRUE;
  2862. cpVect arg1;
  2863. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg1 );
  2864. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  2865. cpVect ret_val;
  2866. ret_val = cpBodyGetVelAtWorldPoint((cpBody*)arg0 , (cpVect)arg1 );
  2867. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  2868. JS_SET_RVAL(cx, vp, ret_jsval);
  2869. return JS_TRUE;
  2870. }
  2871. // Arguments:
  2872. // Ret value: cpFloat
  2873. JSBool JSB_cpBody_getVelLimit(JSContext *cx, uint32_t argc, jsval *vp) {
  2874. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2875. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2876. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2877. cpBody* arg0 = (cpBody*) proxy->handle;
  2878. cpFloat ret_val;
  2879. ret_val = cpBodyGetVelLimit((cpBody*)arg0 );
  2880. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  2881. return JS_TRUE;
  2882. }
  2883. // Arguments: cpFloat, cpFloat
  2884. // Ret value: cpBody*
  2885. JSBool JSB_cpBody_init(JSContext *cx, uint32_t argc, jsval *vp) {
  2886. JSB_PRECONDITION2( argc == 2, cx, JS_FALSE, "Invalid number of arguments" );
  2887. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2888. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2889. cpBody* arg0 = (cpBody*) proxy->handle;
  2890. jsval *argvp = JS_ARGV(cx,vp);
  2891. JSBool ok = JS_TRUE;
  2892. double arg1; double arg2;
  2893. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  2894. ok &= JS_ValueToNumber( cx, *argvp++, &arg2 );
  2895. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  2896. cpBody* ret_val;
  2897. ret_val = cpBodyInit((cpBody*)arg0 , (cpFloat)arg1 , (cpFloat)arg2 );
  2898. jsval ret_jsval = c_class_to_jsval( cx, ret_val, JSB_cpBody_object, JSB_cpBody_class, "cpBody" );
  2899. JS_SET_RVAL(cx, vp, ret_jsval);
  2900. return JS_TRUE;
  2901. }
  2902. // Arguments:
  2903. // Ret value: cpBody*
  2904. JSBool JSB_cpBody_initStatic(JSContext *cx, uint32_t argc, jsval *vp) {
  2905. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2906. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2907. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2908. cpBody* arg0 = (cpBody*) proxy->handle;
  2909. cpBody* ret_val;
  2910. ret_val = cpBodyInitStatic((cpBody*)arg0 );
  2911. jsval ret_jsval = c_class_to_jsval( cx, ret_val, JSB_cpBody_object, JSB_cpBody_class, "cpBody" );
  2912. JS_SET_RVAL(cx, vp, ret_jsval);
  2913. return JS_TRUE;
  2914. }
  2915. // Arguments:
  2916. // Ret value: cpBool
  2917. JSBool JSB_cpBody_isRogue(JSContext *cx, uint32_t argc, jsval *vp) {
  2918. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2919. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2920. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2921. cpBody* arg0 = (cpBody*) proxy->handle;
  2922. cpBool ret_val;
  2923. ret_val = cpBodyIsRogue((cpBody*)arg0 );
  2924. JS_SET_RVAL(cx, vp, INT_TO_JSVAL((int32_t)ret_val));
  2925. return JS_TRUE;
  2926. }
  2927. // Arguments:
  2928. // Ret value: cpBool
  2929. JSBool JSB_cpBody_isSleeping(JSContext *cx, uint32_t argc, jsval *vp) {
  2930. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2931. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2932. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2933. cpBody* arg0 = (cpBody*) proxy->handle;
  2934. cpBool ret_val;
  2935. ret_val = cpBodyIsSleeping((cpBody*)arg0 );
  2936. JS_SET_RVAL(cx, vp, INT_TO_JSVAL((int32_t)ret_val));
  2937. return JS_TRUE;
  2938. }
  2939. // Arguments:
  2940. // Ret value: cpBool
  2941. JSBool JSB_cpBody_isStatic(JSContext *cx, uint32_t argc, jsval *vp) {
  2942. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2943. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2944. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2945. cpBody* arg0 = (cpBody*) proxy->handle;
  2946. cpBool ret_val;
  2947. ret_val = cpBodyIsStatic((cpBody*)arg0 );
  2948. JS_SET_RVAL(cx, vp, INT_TO_JSVAL((int32_t)ret_val));
  2949. return JS_TRUE;
  2950. }
  2951. // Arguments:
  2952. // Ret value: cpFloat
  2953. JSBool JSB_cpBody_kineticEnergy(JSContext *cx, uint32_t argc, jsval *vp) {
  2954. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2955. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2956. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2957. cpBody* arg0 = (cpBody*) proxy->handle;
  2958. cpFloat ret_val;
  2959. ret_val = cpBodyKineticEnergy((cpBody*)arg0 );
  2960. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  2961. return JS_TRUE;
  2962. }
  2963. // Arguments: cpVect
  2964. // Ret value: cpVect
  2965. JSBool JSB_cpBody_local2World(JSContext *cx, uint32_t argc, jsval *vp) {
  2966. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  2967. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2968. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2969. cpBody* arg0 = (cpBody*) proxy->handle;
  2970. jsval *argvp = JS_ARGV(cx,vp);
  2971. JSBool ok = JS_TRUE;
  2972. cpVect arg1;
  2973. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg1 );
  2974. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  2975. cpVect ret_val;
  2976. ret_val = cpBodyLocal2World((cpBody*)arg0 , (cpVect)arg1 );
  2977. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  2978. JS_SET_RVAL(cx, vp, ret_jsval);
  2979. return JS_TRUE;
  2980. }
  2981. // Arguments:
  2982. // Ret value: void
  2983. JSBool JSB_cpBody_resetForces(JSContext *cx, uint32_t argc, jsval *vp) {
  2984. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  2985. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2986. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2987. cpBody* arg0 = (cpBody*) proxy->handle;
  2988. cpBodyResetForces((cpBody*)arg0 );
  2989. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  2990. return JS_TRUE;
  2991. }
  2992. // Arguments: cpFloat
  2993. // Ret value: void
  2994. JSBool JSB_cpBody_setAngVel(JSContext *cx, uint32_t argc, jsval *vp) {
  2995. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  2996. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  2997. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  2998. cpBody* arg0 = (cpBody*) proxy->handle;
  2999. jsval *argvp = JS_ARGV(cx,vp);
  3000. JSBool ok = JS_TRUE;
  3001. double arg1;
  3002. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  3003. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  3004. cpBodySetAngVel((cpBody*)arg0 , (cpFloat)arg1 );
  3005. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  3006. return JS_TRUE;
  3007. }
  3008. // Arguments: cpFloat
  3009. // Ret value: void
  3010. JSBool JSB_cpBody_setAngVelLimit(JSContext *cx, uint32_t argc, jsval *vp) {
  3011. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  3012. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3013. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3014. cpBody* arg0 = (cpBody*) proxy->handle;
  3015. jsval *argvp = JS_ARGV(cx,vp);
  3016. JSBool ok = JS_TRUE;
  3017. double arg1;
  3018. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  3019. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  3020. cpBodySetAngVelLimit((cpBody*)arg0 , (cpFloat)arg1 );
  3021. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  3022. return JS_TRUE;
  3023. }
  3024. // Arguments: cpFloat
  3025. // Ret value: void
  3026. JSBool JSB_cpBody_setAngle(JSContext *cx, uint32_t argc, jsval *vp) {
  3027. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  3028. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3029. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3030. cpBody* arg0 = (cpBody*) proxy->handle;
  3031. jsval *argvp = JS_ARGV(cx,vp);
  3032. JSBool ok = JS_TRUE;
  3033. double arg1;
  3034. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  3035. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  3036. cpBodySetAngle((cpBody*)arg0 , (cpFloat)arg1 );
  3037. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  3038. return JS_TRUE;
  3039. }
  3040. // Arguments: cpVect
  3041. // Ret value: void
  3042. JSBool JSB_cpBody_setForce(JSContext *cx, uint32_t argc, jsval *vp) {
  3043. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  3044. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3045. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3046. cpBody* arg0 = (cpBody*) proxy->handle;
  3047. jsval *argvp = JS_ARGV(cx,vp);
  3048. JSBool ok = JS_TRUE;
  3049. cpVect arg1;
  3050. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg1 );
  3051. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  3052. cpBodySetForce((cpBody*)arg0 , (cpVect)arg1 );
  3053. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  3054. return JS_TRUE;
  3055. }
  3056. // Arguments: cpFloat
  3057. // Ret value: void
  3058. JSBool JSB_cpBody_setMass(JSContext *cx, uint32_t argc, jsval *vp) {
  3059. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  3060. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3061. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3062. cpBody* arg0 = (cpBody*) proxy->handle;
  3063. jsval *argvp = JS_ARGV(cx,vp);
  3064. JSBool ok = JS_TRUE;
  3065. double arg1;
  3066. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  3067. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  3068. cpBodySetMass((cpBody*)arg0 , (cpFloat)arg1 );
  3069. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  3070. return JS_TRUE;
  3071. }
  3072. // Arguments: cpFloat
  3073. // Ret value: void
  3074. JSBool JSB_cpBody_setMoment(JSContext *cx, uint32_t argc, jsval *vp) {
  3075. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  3076. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3077. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3078. cpBody* arg0 = (cpBody*) proxy->handle;
  3079. jsval *argvp = JS_ARGV(cx,vp);
  3080. JSBool ok = JS_TRUE;
  3081. double arg1;
  3082. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  3083. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  3084. cpBodySetMoment((cpBody*)arg0 , (cpFloat)arg1 );
  3085. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  3086. return JS_TRUE;
  3087. }
  3088. // Arguments: cpVect
  3089. // Ret value: void
  3090. JSBool JSB_cpBody_setPos(JSContext *cx, uint32_t argc, jsval *vp) {
  3091. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  3092. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3093. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3094. cpBody* arg0 = (cpBody*) proxy->handle;
  3095. jsval *argvp = JS_ARGV(cx,vp);
  3096. JSBool ok = JS_TRUE;
  3097. cpVect arg1;
  3098. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg1 );
  3099. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  3100. cpBodySetPos((cpBody*)arg0 , (cpVect)arg1 );
  3101. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  3102. return JS_TRUE;
  3103. }
  3104. // Arguments: cpFloat
  3105. // Ret value: void
  3106. JSBool JSB_cpBody_setTorque(JSContext *cx, uint32_t argc, jsval *vp) {
  3107. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  3108. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3109. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3110. cpBody* arg0 = (cpBody*) proxy->handle;
  3111. jsval *argvp = JS_ARGV(cx,vp);
  3112. JSBool ok = JS_TRUE;
  3113. double arg1;
  3114. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  3115. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  3116. cpBodySetTorque((cpBody*)arg0 , (cpFloat)arg1 );
  3117. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  3118. return JS_TRUE;
  3119. }
  3120. // Arguments: cpVect
  3121. // Ret value: void
  3122. JSBool JSB_cpBody_setVel(JSContext *cx, uint32_t argc, jsval *vp) {
  3123. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  3124. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3125. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3126. cpBody* arg0 = (cpBody*) proxy->handle;
  3127. jsval *argvp = JS_ARGV(cx,vp);
  3128. JSBool ok = JS_TRUE;
  3129. cpVect arg1;
  3130. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg1 );
  3131. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  3132. cpBodySetVel((cpBody*)arg0 , (cpVect)arg1 );
  3133. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  3134. return JS_TRUE;
  3135. }
  3136. // Arguments: cpFloat
  3137. // Ret value: void
  3138. JSBool JSB_cpBody_setVelLimit(JSContext *cx, uint32_t argc, jsval *vp) {
  3139. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  3140. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3141. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3142. cpBody* arg0 = (cpBody*) proxy->handle;
  3143. jsval *argvp = JS_ARGV(cx,vp);
  3144. JSBool ok = JS_TRUE;
  3145. double arg1;
  3146. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  3147. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  3148. cpBodySetVelLimit((cpBody*)arg0 , (cpFloat)arg1 );
  3149. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  3150. return JS_TRUE;
  3151. }
  3152. // Arguments:
  3153. // Ret value: void
  3154. JSBool JSB_cpBody_sleep(JSContext *cx, uint32_t argc, jsval *vp) {
  3155. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  3156. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3157. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3158. cpBody* arg0 = (cpBody*) proxy->handle;
  3159. cpBodySleep((cpBody*)arg0 );
  3160. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  3161. return JS_TRUE;
  3162. }
  3163. // Arguments: cpBody*
  3164. // Ret value: void
  3165. JSBool JSB_cpBody_sleepWithGroup(JSContext *cx, uint32_t argc, jsval *vp) {
  3166. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  3167. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3168. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3169. cpBody* arg0 = (cpBody*) proxy->handle;
  3170. jsval *argvp = JS_ARGV(cx,vp);
  3171. JSBool ok = JS_TRUE;
  3172. cpBody* arg1;
  3173. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg1, NULL );
  3174. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  3175. cpBodySleepWithGroup((cpBody*)arg0 , (cpBody*)arg1 );
  3176. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  3177. return JS_TRUE;
  3178. }
  3179. // Arguments: cpFloat
  3180. // Ret value: void
  3181. JSBool JSB_cpBody_updatePosition(JSContext *cx, uint32_t argc, jsval *vp) {
  3182. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  3183. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3184. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3185. cpBody* arg0 = (cpBody*) proxy->handle;
  3186. jsval *argvp = JS_ARGV(cx,vp);
  3187. JSBool ok = JS_TRUE;
  3188. double arg1;
  3189. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  3190. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  3191. cpBodyUpdatePosition((cpBody*)arg0 , (cpFloat)arg1 );
  3192. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  3193. return JS_TRUE;
  3194. }
  3195. // Arguments: cpVect, cpFloat, cpFloat
  3196. // Ret value: void
  3197. JSBool JSB_cpBody_updateVelocity(JSContext *cx, uint32_t argc, jsval *vp) {
  3198. JSB_PRECONDITION2( argc == 3, cx, JS_FALSE, "Invalid number of arguments" );
  3199. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3200. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3201. cpBody* arg0 = (cpBody*) proxy->handle;
  3202. jsval *argvp = JS_ARGV(cx,vp);
  3203. JSBool ok = JS_TRUE;
  3204. cpVect arg1; double arg2; double arg3;
  3205. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg1 );
  3206. ok &= JS_ValueToNumber( cx, *argvp++, &arg2 );
  3207. ok &= JS_ValueToNumber( cx, *argvp++, &arg3 );
  3208. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  3209. cpBodyUpdateVelocity((cpBody*)arg0 , (cpVect)arg1 , (cpFloat)arg2 , (cpFloat)arg3 );
  3210. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  3211. return JS_TRUE;
  3212. }
  3213. // Arguments: cpVect
  3214. // Ret value: cpVect
  3215. JSBool JSB_cpBody_world2Local(JSContext *cx, uint32_t argc, jsval *vp) {
  3216. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  3217. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3218. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3219. cpBody* arg0 = (cpBody*) proxy->handle;
  3220. jsval *argvp = JS_ARGV(cx,vp);
  3221. JSBool ok = JS_TRUE;
  3222. cpVect arg1;
  3223. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg1 );
  3224. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  3225. cpVect ret_val;
  3226. ret_val = cpBodyWorld2Local((cpBody*)arg0 , (cpVect)arg1 );
  3227. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  3228. JS_SET_RVAL(cx, vp, ret_jsval);
  3229. return JS_TRUE;
  3230. }
  3231. void JSB_cpBody_createClass(JSContext *cx, JSObject* globalObj, const char* name )
  3232. {
  3233. JSB_cpBody_class = (JSClass *)calloc(1, sizeof(JSClass));
  3234. JSB_cpBody_class->name = name;
  3235. JSB_cpBody_class->addProperty = JS_PropertyStub;
  3236. JSB_cpBody_class->delProperty = JS_DeletePropertyStub;
  3237. JSB_cpBody_class->getProperty = JS_PropertyStub;
  3238. JSB_cpBody_class->setProperty = JS_StrictPropertyStub;
  3239. JSB_cpBody_class->enumerate = JS_EnumerateStub;
  3240. JSB_cpBody_class->resolve = JS_ResolveStub;
  3241. JSB_cpBody_class->convert = JS_ConvertStub;
  3242. JSB_cpBody_class->finalize = JSB_cpBody_finalize;
  3243. JSB_cpBody_class->flags = JSCLASS_HAS_PRIVATE;
  3244. static JSPropertySpec properties[] = {
  3245. {0, 0, 0, 0, 0}
  3246. };
  3247. static JSFunctionSpec funcs[] = {
  3248. JS_FN("activate", JSB_cpBody_activate, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3249. JS_FN("activateStatic", JSB_cpBody_activateStatic, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3250. JS_FN("applyForce", JSB_cpBody_applyForce, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3251. JS_FN("applyImpulse", JSB_cpBody_applyImpulse, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3252. JS_FN("destroy", JSB_cpBody_destroy, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3253. JS_FN("getAngVel", JSB_cpBody_getAngVel, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3254. JS_FN("getAngVelLimit", JSB_cpBody_getAngVelLimit, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3255. JS_FN("getAngle", JSB_cpBody_getAngle, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3256. JS_FN("getForce", JSB_cpBody_getForce, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3257. JS_FN("getMass", JSB_cpBody_getMass, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3258. JS_FN("getMoment", JSB_cpBody_getMoment, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3259. JS_FN("getPos", JSB_cpBody_getPos, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3260. JS_FN("getRot", JSB_cpBody_getRot, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3261. JS_FN("getSpace", JSB_cpBody_getSpace, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3262. JS_FN("getTorque", JSB_cpBody_getTorque, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3263. JS_FN("getVel", JSB_cpBody_getVel, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3264. JS_FN("getVelAtLocalPoint", JSB_cpBody_getVelAtLocalPoint, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3265. JS_FN("getVelAtWorldPoint", JSB_cpBody_getVelAtWorldPoint, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3266. JS_FN("getVelLimit", JSB_cpBody_getVelLimit, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3267. JS_FN("init", JSB_cpBody_init, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3268. JS_FN("initStatic", JSB_cpBody_initStatic, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3269. JS_FN("isRogue", JSB_cpBody_isRogue, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3270. JS_FN("isSleeping", JSB_cpBody_isSleeping, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3271. JS_FN("isStatic", JSB_cpBody_isStatic, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3272. JS_FN("kineticEnergy", JSB_cpBody_kineticEnergy, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3273. JS_FN("local2World", JSB_cpBody_local2World, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3274. JS_FN("resetForces", JSB_cpBody_resetForces, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3275. JS_FN("setAngVel", JSB_cpBody_setAngVel, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3276. JS_FN("setAngVelLimit", JSB_cpBody_setAngVelLimit, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3277. JS_FN("setAngle", JSB_cpBody_setAngle, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3278. JS_FN("setForce", JSB_cpBody_setForce, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3279. JS_FN("setMass", JSB_cpBody_setMass, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3280. JS_FN("setMoment", JSB_cpBody_setMoment, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3281. JS_FN("setPos", JSB_cpBody_setPos, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3282. JS_FN("setTorque", JSB_cpBody_setTorque, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3283. JS_FN("setVel", JSB_cpBody_setVel, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3284. JS_FN("setVelLimit", JSB_cpBody_setVelLimit, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3285. JS_FN("sleep", JSB_cpBody_sleep, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3286. JS_FN("sleepWithGroup", JSB_cpBody_sleepWithGroup, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3287. JS_FN("updatePosition", JSB_cpBody_updatePosition, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3288. JS_FN("updateVelocity", JSB_cpBody_updateVelocity, 3, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3289. JS_FN("world2Local", JSB_cpBody_world2Local, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3290. JS_FN("setUserData", JSB_cpBody_setUserData, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3291. JS_FN("getUserData", JSB_cpBody_getUserData, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3292. JS_FS_END
  3293. };
  3294. static JSFunctionSpec st_funcs[] = {
  3295. JS_FS_END
  3296. };
  3297. JSB_cpBody_object = JS_InitClass(cx, globalObj, JSB_cpBase_object, JSB_cpBody_class, JSB_cpBody_constructor,0,properties,funcs,NULL,st_funcs);
  3298. JSBool found;
  3299. JS_SetPropertyAttributes(cx, globalObj, name, JSPROP_ENUMERATE | JSPROP_READONLY, &found);
  3300. }
  3301. /*
  3302. * cpShape
  3303. */
  3304. #pragma mark - cpShape
  3305. JSClass* JSB_cpShape_class = NULL;
  3306. JSObject* JSB_cpShape_object = NULL;
  3307. // Constructor
  3308. JSBool JSB_cpShape_constructor(JSContext *cx, uint32_t argc, jsval *vp)
  3309. {
  3310. JSB_PRECONDITION2(argc==0, cx, JS_FALSE, "Invalid number of arguments");
  3311. JSB_PRECONDITION2(false, cx, JS_TRUE, "No constructor");
  3312. return JS_TRUE;
  3313. }
  3314. // Destructor
  3315. void JSB_cpShape_finalize(JSFreeOp *fop, JSObject *jsthis)
  3316. {
  3317. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3318. if( proxy ) {
  3319. CCLOGINFO("jsbindings: finalizing JS object %p (cpShape), handle: %p", jsthis, proxy->handle);
  3320. jsb_del_jsobject_for_proxy(proxy->handle);
  3321. if(proxy->flags == JSB_C_FLAG_CALL_FREE)
  3322. cpShapeFree( (cpShape*)proxy->handle);
  3323. jsb_del_c_proxy_for_jsobject(jsthis);
  3324. } else {
  3325. CCLOGINFO("jsbindings: finalizing uninitialized JS object %p (cpShape)", jsthis);
  3326. }
  3327. }
  3328. // Arguments:
  3329. // Ret value: cpBB
  3330. JSBool JSB_cpShape_cacheBB(JSContext *cx, uint32_t argc, jsval *vp) {
  3331. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  3332. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3333. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3334. cpShape* arg0 = (cpShape*) proxy->handle;
  3335. cpBB ret_val;
  3336. ret_val = cpShapeCacheBB((cpShape*)arg0 );
  3337. jsval ret_jsval = cpBB_to_jsval( cx, (cpBB)ret_val );
  3338. JS_SET_RVAL(cx, vp, ret_jsval);
  3339. return JS_TRUE;
  3340. }
  3341. // Arguments:
  3342. // Ret value: void
  3343. JSBool JSB_cpShape_destroy(JSContext *cx, uint32_t argc, jsval *vp) {
  3344. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  3345. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3346. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3347. cpShape* arg0 = (cpShape*) proxy->handle;
  3348. cpShapeDestroy((cpShape*)arg0 );
  3349. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  3350. return JS_TRUE;
  3351. }
  3352. // Arguments:
  3353. // Ret value: cpBB
  3354. JSBool JSB_cpShape_getBB(JSContext *cx, uint32_t argc, jsval *vp) {
  3355. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  3356. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3357. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3358. cpShape* arg0 = (cpShape*) proxy->handle;
  3359. cpBB ret_val;
  3360. ret_val = cpShapeGetBB((cpShape*)arg0 );
  3361. jsval ret_jsval = cpBB_to_jsval( cx, (cpBB)ret_val );
  3362. JS_SET_RVAL(cx, vp, ret_jsval);
  3363. return JS_TRUE;
  3364. }
  3365. // Arguments:
  3366. // Ret value: cpBody*
  3367. JSBool JSB_cpShape_getBody(JSContext *cx, uint32_t argc, jsval *vp) {
  3368. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  3369. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3370. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3371. cpShape* arg0 = (cpShape*) proxy->handle;
  3372. cpBody* ret_val;
  3373. ret_val = cpShapeGetBody((cpShape*)arg0 );
  3374. jsval ret_jsval = c_class_to_jsval( cx, ret_val, JSB_cpBody_object, JSB_cpBody_class, "cpBody" );
  3375. JS_SET_RVAL(cx, vp, ret_jsval);
  3376. return JS_TRUE;
  3377. }
  3378. // Arguments:
  3379. // Ret value: cpCollisionType
  3380. JSBool JSB_cpShape_getCollisionType(JSContext *cx, uint32_t argc, jsval *vp) {
  3381. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  3382. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3383. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3384. cpShape* arg0 = (cpShape*) proxy->handle;
  3385. cpCollisionType ret_val;
  3386. ret_val = cpShapeGetCollisionType((cpShape*)arg0 );
  3387. jsval ret_jsval = uint32_to_jsval( cx, (cpCollisionType)ret_val );
  3388. JS_SET_RVAL(cx, vp, ret_jsval);
  3389. return JS_TRUE;
  3390. }
  3391. // Arguments:
  3392. // Ret value: cpFloat
  3393. JSBool JSB_cpShape_getElasticity(JSContext *cx, uint32_t argc, jsval *vp) {
  3394. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  3395. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3396. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3397. cpShape* arg0 = (cpShape*) proxy->handle;
  3398. cpFloat ret_val;
  3399. ret_val = cpShapeGetElasticity((cpShape*)arg0 );
  3400. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  3401. return JS_TRUE;
  3402. }
  3403. // Arguments:
  3404. // Ret value: cpFloat
  3405. JSBool JSB_cpShape_getFriction(JSContext *cx, uint32_t argc, jsval *vp) {
  3406. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  3407. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3408. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3409. cpShape* arg0 = (cpShape*) proxy->handle;
  3410. cpFloat ret_val;
  3411. ret_val = cpShapeGetFriction((cpShape*)arg0 );
  3412. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  3413. return JS_TRUE;
  3414. }
  3415. // Arguments:
  3416. // Ret value: cpGroup
  3417. JSBool JSB_cpShape_getGroup(JSContext *cx, uint32_t argc, jsval *vp) {
  3418. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  3419. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3420. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3421. cpShape* arg0 = (cpShape*) proxy->handle;
  3422. cpGroup ret_val;
  3423. ret_val = cpShapeGetGroup((cpShape*)arg0 );
  3424. jsval ret_jsval = uint32_to_jsval( cx, (cpGroup)ret_val );
  3425. JS_SET_RVAL(cx, vp, ret_jsval);
  3426. return JS_TRUE;
  3427. }
  3428. // Arguments:
  3429. // Ret value: cpLayers
  3430. JSBool JSB_cpShape_getLayers(JSContext *cx, uint32_t argc, jsval *vp) {
  3431. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  3432. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3433. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3434. cpShape* arg0 = (cpShape*) proxy->handle;
  3435. cpLayers ret_val;
  3436. ret_val = cpShapeGetLayers((cpShape*)arg0 );
  3437. JS_SET_RVAL(cx, vp, UINT_TO_JSVAL((uint32_t)ret_val));
  3438. return JS_TRUE;
  3439. }
  3440. // Arguments:
  3441. // Ret value: cpBool
  3442. JSBool JSB_cpShape_getSensor(JSContext *cx, uint32_t argc, jsval *vp) {
  3443. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  3444. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3445. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3446. cpShape* arg0 = (cpShape*) proxy->handle;
  3447. cpBool ret_val;
  3448. ret_val = cpShapeGetSensor((cpShape*)arg0 );
  3449. JS_SET_RVAL(cx, vp, INT_TO_JSVAL((int32_t)ret_val));
  3450. return JS_TRUE;
  3451. }
  3452. // Arguments:
  3453. // Ret value: cpSpace*
  3454. JSBool JSB_cpShape_getSpace(JSContext *cx, uint32_t argc, jsval *vp) {
  3455. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  3456. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3457. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3458. cpShape* arg0 = (cpShape*) proxy->handle;
  3459. cpSpace* ret_val;
  3460. ret_val = cpShapeGetSpace((cpShape*)arg0 );
  3461. jsval ret_jsval = c_class_to_jsval( cx, ret_val, JSB_cpSpace_object, JSB_cpSpace_class, "cpSpace" );
  3462. JS_SET_RVAL(cx, vp, ret_jsval);
  3463. return JS_TRUE;
  3464. }
  3465. // Arguments:
  3466. // Ret value: cpVect
  3467. JSBool JSB_cpShape_getSurfaceVelocity(JSContext *cx, uint32_t argc, jsval *vp) {
  3468. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  3469. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3470. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3471. cpShape* arg0 = (cpShape*) proxy->handle;
  3472. cpVect ret_val;
  3473. ret_val = cpShapeGetSurfaceVelocity((cpShape*)arg0 );
  3474. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  3475. JS_SET_RVAL(cx, vp, ret_jsval);
  3476. return JS_TRUE;
  3477. }
  3478. // Arguments: cpVect
  3479. // Ret value: cpBool
  3480. JSBool JSB_cpShape_pointQuery(JSContext *cx, uint32_t argc, jsval *vp) {
  3481. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  3482. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3483. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3484. cpShape* arg0 = (cpShape*) proxy->handle;
  3485. jsval *argvp = JS_ARGV(cx,vp);
  3486. JSBool ok = JS_TRUE;
  3487. cpVect arg1;
  3488. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg1 );
  3489. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  3490. cpBool ret_val;
  3491. ret_val = cpShapePointQuery((cpShape*)arg0 , (cpVect)arg1 );
  3492. JS_SET_RVAL(cx, vp, INT_TO_JSVAL((int32_t)ret_val));
  3493. return JS_TRUE;
  3494. }
  3495. // Arguments: cpBody*
  3496. // Ret value: void
  3497. JSBool JSB_cpShape_setBody(JSContext *cx, uint32_t argc, jsval *vp) {
  3498. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  3499. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3500. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3501. cpShape* arg0 = (cpShape*) proxy->handle;
  3502. jsval *argvp = JS_ARGV(cx,vp);
  3503. JSBool ok = JS_TRUE;
  3504. cpBody* arg1;
  3505. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg1, NULL );
  3506. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  3507. cpShapeSetBody((cpShape*)arg0 , (cpBody*)arg1 );
  3508. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  3509. return JS_TRUE;
  3510. }
  3511. // Arguments: cpCollisionType
  3512. // Ret value: void
  3513. JSBool JSB_cpShape_setCollisionType(JSContext *cx, uint32_t argc, jsval *vp) {
  3514. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  3515. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3516. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3517. cpShape* arg0 = (cpShape*) proxy->handle;
  3518. jsval *argvp = JS_ARGV(cx,vp);
  3519. JSBool ok = JS_TRUE;
  3520. cpCollisionType arg1;
  3521. ok &= jsval_to_uint( cx, *argvp++, (unsigned int*) &arg1 );
  3522. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  3523. cpShapeSetCollisionType((cpShape*)arg0 , (cpCollisionType)arg1 );
  3524. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  3525. return JS_TRUE;
  3526. }
  3527. // Arguments: cpFloat
  3528. // Ret value: void
  3529. JSBool JSB_cpShape_setElasticity(JSContext *cx, uint32_t argc, jsval *vp) {
  3530. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  3531. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3532. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3533. cpShape* arg0 = (cpShape*) proxy->handle;
  3534. jsval *argvp = JS_ARGV(cx,vp);
  3535. JSBool ok = JS_TRUE;
  3536. double arg1;
  3537. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  3538. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  3539. cpShapeSetElasticity((cpShape*)arg0 , (cpFloat)arg1 );
  3540. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  3541. return JS_TRUE;
  3542. }
  3543. // Arguments: cpFloat
  3544. // Ret value: void
  3545. JSBool JSB_cpShape_setFriction(JSContext *cx, uint32_t argc, jsval *vp) {
  3546. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  3547. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3548. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3549. cpShape* arg0 = (cpShape*) proxy->handle;
  3550. jsval *argvp = JS_ARGV(cx,vp);
  3551. JSBool ok = JS_TRUE;
  3552. double arg1;
  3553. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  3554. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  3555. cpShapeSetFriction((cpShape*)arg0 , (cpFloat)arg1 );
  3556. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  3557. return JS_TRUE;
  3558. }
  3559. // Arguments: cpGroup
  3560. // Ret value: void
  3561. JSBool JSB_cpShape_setGroup(JSContext *cx, uint32_t argc, jsval *vp) {
  3562. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  3563. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3564. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3565. cpShape* arg0 = (cpShape*) proxy->handle;
  3566. jsval *argvp = JS_ARGV(cx,vp);
  3567. JSBool ok = JS_TRUE;
  3568. cpGroup arg1;
  3569. ok &= jsval_to_uint( cx, *argvp++, (unsigned int*) &arg1 );
  3570. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  3571. cpShapeSetGroup((cpShape*)arg0 , (cpGroup)arg1 );
  3572. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  3573. return JS_TRUE;
  3574. }
  3575. // Arguments: cpLayers
  3576. // Ret value: void
  3577. JSBool JSB_cpShape_setLayers(JSContext *cx, uint32_t argc, jsval *vp) {
  3578. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  3579. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3580. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3581. cpShape* arg0 = (cpShape*) proxy->handle;
  3582. jsval *argvp = JS_ARGV(cx,vp);
  3583. JSBool ok = JS_TRUE;
  3584. uint32_t arg1;
  3585. ok &= jsval_to_uint32( cx, *argvp++, &arg1 );
  3586. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  3587. cpShapeSetLayers((cpShape*)arg0 , (cpLayers)arg1 );
  3588. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  3589. return JS_TRUE;
  3590. }
  3591. // Arguments: cpBool
  3592. // Ret value: void
  3593. JSBool JSB_cpShape_setSensor(JSContext *cx, uint32_t argc, jsval *vp) {
  3594. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  3595. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3596. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3597. cpShape* arg0 = (cpShape*) proxy->handle;
  3598. jsval *argvp = JS_ARGV(cx,vp);
  3599. JSBool ok = JS_TRUE;
  3600. int32_t arg1;
  3601. ok &= jsval_to_int32( cx, *argvp++, &arg1 );
  3602. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  3603. cpShapeSetSensor((cpShape*)arg0 , (cpBool)arg1 );
  3604. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  3605. return JS_TRUE;
  3606. }
  3607. // Arguments: cpVect
  3608. // Ret value: void
  3609. JSBool JSB_cpShape_setSurfaceVelocity(JSContext *cx, uint32_t argc, jsval *vp) {
  3610. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  3611. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3612. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3613. cpShape* arg0 = (cpShape*) proxy->handle;
  3614. jsval *argvp = JS_ARGV(cx,vp);
  3615. JSBool ok = JS_TRUE;
  3616. cpVect arg1;
  3617. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg1 );
  3618. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  3619. cpShapeSetSurfaceVelocity((cpShape*)arg0 , (cpVect)arg1 );
  3620. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  3621. return JS_TRUE;
  3622. }
  3623. // Arguments: cpVect, cpVect
  3624. // Ret value: cpBB
  3625. JSBool JSB_cpShape_update(JSContext *cx, uint32_t argc, jsval *vp) {
  3626. JSB_PRECONDITION2( argc == 2, cx, JS_FALSE, "Invalid number of arguments" );
  3627. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3628. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3629. cpShape* arg0 = (cpShape*) proxy->handle;
  3630. jsval *argvp = JS_ARGV(cx,vp);
  3631. JSBool ok = JS_TRUE;
  3632. cpVect arg1; cpVect arg2;
  3633. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg1 );
  3634. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg2 );
  3635. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  3636. cpBB ret_val;
  3637. ret_val = cpShapeUpdate((cpShape*)arg0 , (cpVect)arg1 , (cpVect)arg2 );
  3638. jsval ret_jsval = cpBB_to_jsval( cx, (cpBB)ret_val );
  3639. JS_SET_RVAL(cx, vp, ret_jsval);
  3640. return JS_TRUE;
  3641. }
  3642. void JSB_cpShape_createClass(JSContext *cx, JSObject* globalObj, const char* name )
  3643. {
  3644. JSB_cpShape_class = (JSClass *)calloc(1, sizeof(JSClass));
  3645. JSB_cpShape_class->name = name;
  3646. JSB_cpShape_class->addProperty = JS_PropertyStub;
  3647. JSB_cpShape_class->delProperty = JS_DeletePropertyStub;
  3648. JSB_cpShape_class->getProperty = JS_PropertyStub;
  3649. JSB_cpShape_class->setProperty = JS_StrictPropertyStub;
  3650. JSB_cpShape_class->enumerate = JS_EnumerateStub;
  3651. JSB_cpShape_class->resolve = JS_ResolveStub;
  3652. JSB_cpShape_class->convert = JS_ConvertStub;
  3653. JSB_cpShape_class->finalize = JSB_cpShape_finalize;
  3654. JSB_cpShape_class->flags = JSCLASS_HAS_PRIVATE;
  3655. static JSPropertySpec properties[] = {
  3656. {0, 0, 0, 0, 0}
  3657. };
  3658. static JSFunctionSpec funcs[] = {
  3659. JS_FN("cacheBB", JSB_cpShape_cacheBB, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3660. JS_FN("destroy", JSB_cpShape_destroy, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3661. JS_FN("getBB", JSB_cpShape_getBB, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3662. JS_FN("getBody", JSB_cpShape_getBody, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3663. JS_FN("getCollisionType", JSB_cpShape_getCollisionType, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3664. JS_FN("getElasticity", JSB_cpShape_getElasticity, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3665. JS_FN("getFriction", JSB_cpShape_getFriction, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3666. JS_FN("getGroup", JSB_cpShape_getGroup, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3667. JS_FN("getLayers", JSB_cpShape_getLayers, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3668. JS_FN("getSensor", JSB_cpShape_getSensor, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3669. JS_FN("getSpace", JSB_cpShape_getSpace, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3670. JS_FN("getSurfaceVelocity", JSB_cpShape_getSurfaceVelocity, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3671. JS_FN("pointQuery", JSB_cpShape_pointQuery, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3672. JS_FN("setBody", JSB_cpShape_setBody, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3673. JS_FN("setCollisionType", JSB_cpShape_setCollisionType, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3674. JS_FN("setElasticity", JSB_cpShape_setElasticity, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3675. JS_FN("setFriction", JSB_cpShape_setFriction, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3676. JS_FN("setGroup", JSB_cpShape_setGroup, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3677. JS_FN("setLayers", JSB_cpShape_setLayers, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3678. JS_FN("setSensor", JSB_cpShape_setSensor, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3679. JS_FN("setSurfaceVelocity", JSB_cpShape_setSurfaceVelocity, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3680. JS_FN("update", JSB_cpShape_update, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3681. JS_FS_END
  3682. };
  3683. static JSFunctionSpec st_funcs[] = {
  3684. JS_FS_END
  3685. };
  3686. JSB_cpShape_object = JS_InitClass(cx, globalObj, JSB_cpBase_object, JSB_cpShape_class, JSB_cpShape_constructor,0,properties,funcs,NULL,st_funcs);
  3687. JSBool found;
  3688. JS_SetPropertyAttributes(cx, globalObj, name, JSPROP_ENUMERATE | JSPROP_READONLY, &found);
  3689. }
  3690. /*
  3691. * cpCircleShape
  3692. */
  3693. #pragma mark - cpCircleShape
  3694. JSClass* JSB_cpCircleShape_class = NULL;
  3695. JSObject* JSB_cpCircleShape_object = NULL;
  3696. // Arguments: cpBody*, cpFloat, cpVect
  3697. // Constructor
  3698. JSBool JSB_cpCircleShape_constructor(JSContext *cx, uint32_t argc, jsval *vp)
  3699. {
  3700. JSB_PRECONDITION2(argc==3, cx, JS_FALSE, "Invalid number of arguments");
  3701. JSObject *jsobj = JS_NewObject(cx, JSB_cpCircleShape_class, JSB_cpCircleShape_object, NULL);
  3702. jsval *argvp = JS_ARGV(cx,vp);
  3703. JSBool ok = JS_TRUE;
  3704. cpBody* arg0; double arg1; cpVect arg2;
  3705. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg0, NULL );
  3706. ok &= JS_ValueToNumber( cx, *argvp++, &arg1 );
  3707. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg2 );
  3708. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  3709. void* ret_val = cpCircleShapeNew((cpBody*)arg0 , (cpFloat)arg1 , (cpVect)arg2 );
  3710. jsb_set_jsobject_for_proxy(jsobj, ret_val);
  3711. jsb_set_c_proxy_for_jsobject(jsobj, ret_val, JSB_C_FLAG_CALL_FREE);
  3712. JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(jsobj));
  3713. return JS_TRUE;
  3714. }
  3715. // Destructor
  3716. void JSB_cpCircleShape_finalize(JSFreeOp *fop, JSObject *jsthis)
  3717. {
  3718. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3719. if( proxy ) {
  3720. CCLOGINFO("jsbindings: finalizing JS object %p (cpCircleShape), handle: %p", jsthis, proxy->handle);
  3721. jsb_del_jsobject_for_proxy(proxy->handle);
  3722. if(proxy->flags == JSB_C_FLAG_CALL_FREE)
  3723. cpShapeFree( (cpShape*)proxy->handle);
  3724. jsb_del_c_proxy_for_jsobject(jsthis);
  3725. } else {
  3726. CCLOGINFO("jsbindings: finalizing uninitialized JS object %p (cpCircleShape)", jsthis);
  3727. }
  3728. }
  3729. // Arguments:
  3730. // Ret value: cpVect
  3731. JSBool JSB_cpCircleShape_getOffset(JSContext *cx, uint32_t argc, jsval *vp) {
  3732. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  3733. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3734. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3735. cpCircleShape* arg0 = (cpCircleShape*) proxy->handle;
  3736. cpVect ret_val;
  3737. ret_val = cpCircleShapeGetOffset((cpShape*)arg0 );
  3738. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  3739. JS_SET_RVAL(cx, vp, ret_jsval);
  3740. return JS_TRUE;
  3741. }
  3742. // Arguments:
  3743. // Ret value: cpFloat
  3744. JSBool JSB_cpCircleShape_getRadius(JSContext *cx, uint32_t argc, jsval *vp) {
  3745. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  3746. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3747. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3748. cpCircleShape* arg0 = (cpCircleShape*) proxy->handle;
  3749. cpFloat ret_val;
  3750. ret_val = cpCircleShapeGetRadius((cpShape*)arg0 );
  3751. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  3752. return JS_TRUE;
  3753. }
  3754. void JSB_cpCircleShape_createClass(JSContext *cx, JSObject* globalObj, const char* name )
  3755. {
  3756. JSB_cpCircleShape_class = (JSClass *)calloc(1, sizeof(JSClass));
  3757. JSB_cpCircleShape_class->name = name;
  3758. JSB_cpCircleShape_class->addProperty = JS_PropertyStub;
  3759. JSB_cpCircleShape_class->delProperty = JS_DeletePropertyStub;
  3760. JSB_cpCircleShape_class->getProperty = JS_PropertyStub;
  3761. JSB_cpCircleShape_class->setProperty = JS_StrictPropertyStub;
  3762. JSB_cpCircleShape_class->enumerate = JS_EnumerateStub;
  3763. JSB_cpCircleShape_class->resolve = JS_ResolveStub;
  3764. JSB_cpCircleShape_class->convert = JS_ConvertStub;
  3765. JSB_cpCircleShape_class->finalize = JSB_cpCircleShape_finalize;
  3766. JSB_cpCircleShape_class->flags = JSCLASS_HAS_PRIVATE;
  3767. static JSPropertySpec properties[] = {
  3768. {0, 0, 0, 0, 0}
  3769. };
  3770. static JSFunctionSpec funcs[] = {
  3771. JS_FN("getOffset", JSB_cpCircleShape_getOffset, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3772. JS_FN("getRadius", JSB_cpCircleShape_getRadius, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3773. JS_FS_END
  3774. };
  3775. static JSFunctionSpec st_funcs[] = {
  3776. JS_FS_END
  3777. };
  3778. JSB_cpCircleShape_object = JS_InitClass(cx, globalObj, JSB_cpShape_object, JSB_cpCircleShape_class, JSB_cpCircleShape_constructor,0,properties,funcs,NULL,st_funcs);
  3779. JSBool found;
  3780. JS_SetPropertyAttributes(cx, globalObj, name, JSPROP_ENUMERATE | JSPROP_READONLY, &found);
  3781. }
  3782. /*
  3783. * cpSegmentShape
  3784. */
  3785. #pragma mark - cpSegmentShape
  3786. JSClass* JSB_cpSegmentShape_class = NULL;
  3787. JSObject* JSB_cpSegmentShape_object = NULL;
  3788. // Arguments: cpBody*, cpVect, cpVect, cpFloat
  3789. // Constructor
  3790. JSBool JSB_cpSegmentShape_constructor(JSContext *cx, uint32_t argc, jsval *vp)
  3791. {
  3792. JSB_PRECONDITION2(argc==4, cx, JS_FALSE, "Invalid number of arguments");
  3793. JSObject *jsobj = JS_NewObject(cx, JSB_cpSegmentShape_class, JSB_cpSegmentShape_object, NULL);
  3794. jsval *argvp = JS_ARGV(cx,vp);
  3795. JSBool ok = JS_TRUE;
  3796. cpBody* arg0; cpVect arg1; cpVect arg2; double arg3;
  3797. ok &= jsval_to_c_class( cx, *argvp++, (void**)&arg0, NULL );
  3798. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg1 );
  3799. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg2 );
  3800. ok &= JS_ValueToNumber( cx, *argvp++, &arg3 );
  3801. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  3802. void* ret_val = cpSegmentShapeNew((cpBody*)arg0 , (cpVect)arg1 , (cpVect)arg2 , (cpFloat)arg3 );
  3803. jsb_set_jsobject_for_proxy(jsobj, ret_val);
  3804. jsb_set_c_proxy_for_jsobject(jsobj, ret_val, JSB_C_FLAG_CALL_FREE);
  3805. JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(jsobj));
  3806. return JS_TRUE;
  3807. }
  3808. // Destructor
  3809. void JSB_cpSegmentShape_finalize(JSFreeOp *fop, JSObject *jsthis)
  3810. {
  3811. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3812. if( proxy ) {
  3813. CCLOGINFO("jsbindings: finalizing JS object %p (cpSegmentShape), handle: %p", jsthis, proxy->handle);
  3814. jsb_del_jsobject_for_proxy(proxy->handle);
  3815. if(proxy->flags == JSB_C_FLAG_CALL_FREE)
  3816. cpShapeFree( (cpShape*)proxy->handle);
  3817. jsb_del_c_proxy_for_jsobject(jsthis);
  3818. } else {
  3819. CCLOGINFO("jsbindings: finalizing uninitialized JS object %p (cpSegmentShape)", jsthis);
  3820. }
  3821. }
  3822. // Arguments:
  3823. // Ret value: cpVect
  3824. JSBool JSB_cpSegmentShape_getA(JSContext *cx, uint32_t argc, jsval *vp) {
  3825. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  3826. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3827. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3828. cpSegmentShape* arg0 = (cpSegmentShape*) proxy->handle;
  3829. cpVect ret_val;
  3830. ret_val = cpSegmentShapeGetA((cpShape*)arg0 );
  3831. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  3832. JS_SET_RVAL(cx, vp, ret_jsval);
  3833. return JS_TRUE;
  3834. }
  3835. // Arguments:
  3836. // Ret value: cpVect
  3837. JSBool JSB_cpSegmentShape_getB(JSContext *cx, uint32_t argc, jsval *vp) {
  3838. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  3839. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3840. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3841. cpSegmentShape* arg0 = (cpSegmentShape*) proxy->handle;
  3842. cpVect ret_val;
  3843. ret_val = cpSegmentShapeGetB((cpShape*)arg0 );
  3844. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  3845. JS_SET_RVAL(cx, vp, ret_jsval);
  3846. return JS_TRUE;
  3847. }
  3848. // Arguments:
  3849. // Ret value: cpVect
  3850. JSBool JSB_cpSegmentShape_getNormal(JSContext *cx, uint32_t argc, jsval *vp) {
  3851. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  3852. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3853. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3854. cpSegmentShape* arg0 = (cpSegmentShape*) proxy->handle;
  3855. cpVect ret_val;
  3856. ret_val = cpSegmentShapeGetNormal((cpShape*)arg0 );
  3857. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  3858. JS_SET_RVAL(cx, vp, ret_jsval);
  3859. return JS_TRUE;
  3860. }
  3861. // Arguments:
  3862. // Ret value: cpFloat
  3863. JSBool JSB_cpSegmentShape_getRadius(JSContext *cx, uint32_t argc, jsval *vp) {
  3864. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  3865. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3866. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3867. cpSegmentShape* arg0 = (cpSegmentShape*) proxy->handle;
  3868. cpFloat ret_val;
  3869. ret_val = cpSegmentShapeGetRadius((cpShape*)arg0 );
  3870. JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(ret_val));
  3871. return JS_TRUE;
  3872. }
  3873. // Arguments: cpVect, cpVect
  3874. // Ret value: void
  3875. JSBool JSB_cpSegmentShape_setNeighbors(JSContext *cx, uint32_t argc, jsval *vp) {
  3876. JSB_PRECONDITION2( argc == 2, cx, JS_FALSE, "Invalid number of arguments" );
  3877. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3878. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3879. cpSegmentShape* arg0 = (cpSegmentShape*) proxy->handle;
  3880. jsval *argvp = JS_ARGV(cx,vp);
  3881. JSBool ok = JS_TRUE;
  3882. cpVect arg1; cpVect arg2;
  3883. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg1 );
  3884. ok &= jsval_to_cpVect( cx, *argvp++, (cpVect*) &arg2 );
  3885. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  3886. cpSegmentShapeSetNeighbors((cpShape*)arg0 , (cpVect)arg1 , (cpVect)arg2 );
  3887. JS_SET_RVAL(cx, vp, JSVAL_VOID);
  3888. return JS_TRUE;
  3889. }
  3890. void JSB_cpSegmentShape_createClass(JSContext *cx, JSObject* globalObj, const char* name )
  3891. {
  3892. JSB_cpSegmentShape_class = (JSClass *)calloc(1, sizeof(JSClass));
  3893. JSB_cpSegmentShape_class->name = name;
  3894. JSB_cpSegmentShape_class->addProperty = JS_PropertyStub;
  3895. JSB_cpSegmentShape_class->delProperty = JS_DeletePropertyStub;
  3896. JSB_cpSegmentShape_class->getProperty = JS_PropertyStub;
  3897. JSB_cpSegmentShape_class->setProperty = JS_StrictPropertyStub;
  3898. JSB_cpSegmentShape_class->enumerate = JS_EnumerateStub;
  3899. JSB_cpSegmentShape_class->resolve = JS_ResolveStub;
  3900. JSB_cpSegmentShape_class->convert = JS_ConvertStub;
  3901. JSB_cpSegmentShape_class->finalize = JSB_cpSegmentShape_finalize;
  3902. JSB_cpSegmentShape_class->flags = JSCLASS_HAS_PRIVATE;
  3903. static JSPropertySpec properties[] = {
  3904. {0, 0, 0, 0, 0}
  3905. };
  3906. static JSFunctionSpec funcs[] = {
  3907. JS_FN("getA", JSB_cpSegmentShape_getA, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3908. JS_FN("getB", JSB_cpSegmentShape_getB, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3909. JS_FN("getNormal", JSB_cpSegmentShape_getNormal, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3910. JS_FN("getRadius", JSB_cpSegmentShape_getRadius, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3911. JS_FN("setNeighbors", JSB_cpSegmentShape_setNeighbors, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3912. JS_FS_END
  3913. };
  3914. static JSFunctionSpec st_funcs[] = {
  3915. JS_FS_END
  3916. };
  3917. JSB_cpSegmentShape_object = JS_InitClass(cx, globalObj, JSB_cpShape_object, JSB_cpSegmentShape_class, JSB_cpSegmentShape_constructor,0,properties,funcs,NULL,st_funcs);
  3918. JSBool found;
  3919. JS_SetPropertyAttributes(cx, globalObj, name, JSPROP_ENUMERATE | JSPROP_READONLY, &found);
  3920. }
  3921. /*
  3922. * cpPolyShape
  3923. */
  3924. #pragma mark - cpPolyShape
  3925. JSClass* JSB_cpPolyShape_class = NULL;
  3926. JSObject* JSB_cpPolyShape_object = NULL;
  3927. // Destructor
  3928. void JSB_cpPolyShape_finalize(JSFreeOp *fop, JSObject *jsthis)
  3929. {
  3930. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3931. if( proxy ) {
  3932. CCLOGINFO("jsbindings: finalizing JS object %p (cpPolyShape), handle: %p", jsthis, proxy->handle);
  3933. jsb_del_jsobject_for_proxy(proxy->handle);
  3934. if(proxy->flags == JSB_C_FLAG_CALL_FREE)
  3935. cpShapeFree( (cpShape*)proxy->handle);
  3936. jsb_del_c_proxy_for_jsobject(jsthis);
  3937. } else {
  3938. CCLOGINFO("jsbindings: finalizing uninitialized JS object %p (cpPolyShape)", jsthis);
  3939. }
  3940. }
  3941. // Arguments:
  3942. // Ret value: int
  3943. JSBool JSB_cpPolyShape_getNumVerts(JSContext *cx, uint32_t argc, jsval *vp) {
  3944. JSB_PRECONDITION2( argc == 0, cx, JS_FALSE, "Invalid number of arguments" );
  3945. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3946. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3947. cpPolyShape* arg0 = (cpPolyShape*) proxy->handle;
  3948. int ret_val;
  3949. ret_val = cpPolyShapeGetNumVerts((cpShape*)arg0 );
  3950. JS_SET_RVAL(cx, vp, INT_TO_JSVAL((int32_t)ret_val));
  3951. return JS_TRUE;
  3952. }
  3953. // Arguments: int
  3954. // Ret value: cpVect
  3955. JSBool JSB_cpPolyShape_getVert(JSContext *cx, uint32_t argc, jsval *vp) {
  3956. JSB_PRECONDITION2( argc == 1, cx, JS_FALSE, "Invalid number of arguments" );
  3957. JSObject* jsthis = (JSObject *)JS_THIS_OBJECT(cx, vp);
  3958. struct jsb_c_proxy_s *proxy = jsb_get_c_proxy_for_jsobject(jsthis);
  3959. cpPolyShape* arg0 = (cpPolyShape*) proxy->handle;
  3960. jsval *argvp = JS_ARGV(cx,vp);
  3961. JSBool ok = JS_TRUE;
  3962. int32_t arg1;
  3963. ok &= jsval_to_int32( cx, *argvp++, &arg1 );
  3964. JSB_PRECONDITION2(ok, cx, JS_FALSE, "Error processing arguments");
  3965. cpVect ret_val;
  3966. ret_val = cpPolyShapeGetVert((cpShape*)arg0 , (int)arg1 );
  3967. jsval ret_jsval = cpVect_to_jsval( cx, (cpVect)ret_val );
  3968. JS_SET_RVAL(cx, vp, ret_jsval);
  3969. return JS_TRUE;
  3970. }
  3971. void JSB_cpPolyShape_createClass(JSContext *cx, JSObject* globalObj, const char* name )
  3972. {
  3973. JSB_cpPolyShape_class = (JSClass *)calloc(1, sizeof(JSClass));
  3974. JSB_cpPolyShape_class->name = name;
  3975. JSB_cpPolyShape_class->addProperty = JS_PropertyStub;
  3976. JSB_cpPolyShape_class->delProperty = JS_DeletePropertyStub;
  3977. JSB_cpPolyShape_class->getProperty = JS_PropertyStub;
  3978. JSB_cpPolyShape_class->setProperty = JS_StrictPropertyStub;
  3979. JSB_cpPolyShape_class->enumerate = JS_EnumerateStub;
  3980. JSB_cpPolyShape_class->resolve = JS_ResolveStub;
  3981. JSB_cpPolyShape_class->convert = JS_ConvertStub;
  3982. JSB_cpPolyShape_class->finalize = JSB_cpPolyShape_finalize;
  3983. JSB_cpPolyShape_class->flags = JSCLASS_HAS_PRIVATE;
  3984. static JSPropertySpec properties[] = {
  3985. {0, 0, 0, 0, 0}
  3986. };
  3987. static JSFunctionSpec funcs[] = {
  3988. JS_FN("getNumVerts", JSB_cpPolyShape_getNumVerts, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3989. JS_FN("getVert", JSB_cpPolyShape_getVert, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE),
  3990. JS_FS_END
  3991. };
  3992. static JSFunctionSpec st_funcs[] = {
  3993. JS_FS_END
  3994. };
  3995. JSB_cpPolyShape_object = JS_InitClass(cx, globalObj, JSB_cpShape_object, JSB_cpPolyShape_class, JSB_cpPolyShape_constructor,0,properties,funcs,NULL,st_funcs);
  3996. JSBool found;
  3997. JS_SetPropertyAttributes(cx, globalObj, name, JSPROP_ENUMERATE | JSPROP_READONLY, &found);
  3998. }
  3999. #endif // JSB_INCLUDE_CHIPMUNK