PageRenderTime 39ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 1ms

/scripting/javascript/bindings/js_bindings_chipmunk_auto_classes.cpp

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