/src/lipsofsuna/extension/physics-object/ext-script.c

https://gitlab.com/xenodora/lipsofsuna · C · 513 lines · 412 code · 73 blank · 28 comment · 46 complexity · 0ed3ca15922ede722cd7fd523cc37c76 MD5 · raw file

  1. /* Lips of Suna
  2. * Copyright© 2007-2012 Lips of Suna development team.
  3. *
  4. * Lips of Suna is free software: you can redistribute it and/or modify
  5. * it under the terms of the GNU Lesser General Public License as
  6. * published by the Free Software Foundation, either version 3 of the
  7. * License, or (at your option) any later version.
  8. *
  9. * Lips of Suna is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. * GNU Lesser General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU Lesser General Public License
  15. * along with Lips of Suna. If not, see <http://www.gnu.org/licenses/>.
  16. */
  17. /**
  18. * \addtogroup LIExt Extension
  19. * @{
  20. * \addtogroup LIExtPhysicsObject PhysicsObject
  21. * @{
  22. */
  23. #include "lipsofsuna/extension/physics/ext-module.h"
  24. #include "ext-module.h"
  25. static void PhysicsObject_new (LIScrArgs* args)
  26. {
  27. LIExtPhysicsObjectModule* module;
  28. LIPhyObject* self;
  29. LIScrData* data;
  30. /* Find the class data. */
  31. module = liscr_script_get_userdata (args->script, LIEXT_SCRIPT_PHYSICS_OBJECT);
  32. /* Allocate the object. */
  33. self = liphy_object_new (module->physics);
  34. if (self == NULL)
  35. return;
  36. /* Allocate the userdata. */
  37. data = liscr_data_new (args->script, args->lua, self, LIEXT_SCRIPT_PHYSICS_OBJECT, liphy_object_free);
  38. if (data == NULL)
  39. {
  40. liphy_object_free (self);
  41. return;
  42. }
  43. liscr_args_seti_stack (args);
  44. }
  45. static void PhysicsObject_approach (LIScrArgs* args)
  46. {
  47. float dist = 0.0f;
  48. float speed = 1.0f;
  49. LIMatVector vector;
  50. if (liscr_args_gets_vector (args, "point", &vector))
  51. {
  52. liscr_args_gets_float (args, "dist", &dist);
  53. liscr_args_gets_float (args, "speed", &speed);
  54. liphy_object_approach (args->self, &vector, speed, dist);
  55. }
  56. }
  57. static void PhysicsObject_impulse (LIScrArgs* args)
  58. {
  59. LIMatVector impulse;
  60. LIMatVector point = { 0.0f, 0.0f, 0.0f };
  61. if (liscr_args_geti_vector (args, 0, &impulse) ||
  62. liscr_args_gets_vector (args, "impulse", &impulse))
  63. {
  64. if (!liscr_args_geti_vector (args, 1, &point))
  65. liscr_args_gets_vector (args, "point", &point);
  66. liphy_object_impulse (args->self, &point, &impulse);
  67. }
  68. }
  69. static void PhysicsObject_insert_hinge_constraint (LIScrArgs* args)
  70. {
  71. LIMatVector pos;
  72. LIMatVector axis = { 0.0f, 1.0f, 0.0f };
  73. LIExtPhysicsObjectModule* module;
  74. module = liscr_script_get_userdata (args->script, LIEXT_SCRIPT_PHYSICS_OBJECT);
  75. if (liscr_args_geti_vector (args, 0, &pos) ||
  76. liscr_args_gets_vector (args, "position", &pos))
  77. {
  78. if (!liscr_args_geti_vector (args, 1, &axis))
  79. liscr_args_gets_vector (args, "axis", &axis);
  80. liphy_constraint_new_hinge (module->physics, args->self, &pos, &axis, 0, 0.0f, 0.0f);
  81. }
  82. }
  83. static void PhysicsObject_jump (LIScrArgs* args)
  84. {
  85. LIMatVector impulse;
  86. if (liscr_args_geti_vector (args, 0, &impulse))
  87. liphy_object_jump (args->self, &impulse);
  88. }
  89. static void PhysicsObject_get_activated (LIScrArgs* args)
  90. {
  91. liscr_args_seti_bool (args, liphy_object_get_activated (args->self));
  92. }
  93. static void PhysicsObject_set_activated (LIScrArgs* args)
  94. {
  95. int value;
  96. if (liscr_args_geti_bool (args, 0, &value))
  97. liphy_object_set_activated (args->self, value);
  98. }
  99. static void PhysicsObject_get_angular (LIScrArgs* args)
  100. {
  101. LIMatVector tmp;
  102. liphy_object_get_angular (args->self, &tmp);
  103. liscr_args_seti_vector (args, &tmp);
  104. }
  105. static void PhysicsObject_set_angular (LIScrArgs* args)
  106. {
  107. LIMatVector vector;
  108. if (liscr_args_geti_vector (args, 0, &vector))
  109. liphy_object_set_angular (args->self, &vector);
  110. }
  111. static void PhysicsObject_get_bounding_box (LIScrArgs* args)
  112. {
  113. LIMatAabb aabb;
  114. liphy_object_get_bounds (args->self, &aabb);
  115. liscr_args_seti_vector (args, &aabb.min);
  116. liscr_args_seti_vector (args, &aabb.max);
  117. }
  118. static void PhysicsObject_get_center_offset (LIScrArgs* args)
  119. {
  120. LIMatAabb aabb;
  121. LIMatVector ctr;
  122. liphy_object_get_bounds (args->self, &aabb);
  123. ctr = limat_vector_add (aabb.min, aabb.max);
  124. ctr = limat_vector_multiply (ctr, 0.5f);
  125. liscr_args_seti_vector (args, &ctr);
  126. }
  127. static void PhysicsObject_get_collision_group (LIScrArgs* args)
  128. {
  129. liscr_args_seti_int (args, liphy_object_get_collision_group (args->self));
  130. }
  131. static void PhysicsObject_set_collision_group (LIScrArgs* args)
  132. {
  133. int value;
  134. if (liscr_args_geti_int (args, 0, &value))
  135. liphy_object_set_collision_group (args->self, value);
  136. }
  137. static void PhysicsObject_get_collision_mask (LIScrArgs* args)
  138. {
  139. liscr_args_seti_int (args, liphy_object_get_collision_mask (args->self));
  140. }
  141. static void PhysicsObject_set_collision_mask (LIScrArgs* args)
  142. {
  143. int value;
  144. if (liscr_args_geti_int (args, 0, &value))
  145. liphy_object_set_collision_mask (args->self, value);
  146. }
  147. static void PhysicsObject_get_contact_events (LIScrArgs* args)
  148. {
  149. liscr_args_seti_bool (args, liphy_object_get_contact_events (args->self));
  150. }
  151. static void PhysicsObject_set_contact_events (LIScrArgs* args)
  152. {
  153. int value;
  154. if (liscr_args_geti_bool (args, 0, &value))
  155. liphy_object_set_contact_events (args->self, value);
  156. }
  157. static void PhysicsObject_get_gravity (LIScrArgs* args)
  158. {
  159. LIMatVector tmp;
  160. liphy_object_get_gravity (args->self, &tmp);
  161. liscr_args_seti_vector (args, &tmp);
  162. }
  163. static void PhysicsObject_set_gravity (LIScrArgs* args)
  164. {
  165. LIMatVector vector;
  166. if (liscr_args_geti_vector (args, 0, &vector))
  167. liphy_object_set_gravity (args->self, &vector);
  168. }
  169. static void PhysicsObject_get_friction_liquid (LIScrArgs* args)
  170. {
  171. float tmp;
  172. tmp = liphy_object_get_friction_liquid (args->self);
  173. liscr_args_seti_float (args, tmp);
  174. }
  175. static void PhysicsObject_set_friction_liquid (LIScrArgs* args)
  176. {
  177. float tmp;
  178. if (liscr_args_geti_float (args, 0, &tmp))
  179. liphy_object_set_friction_liquid (args->self, tmp);
  180. }
  181. static void PhysicsObject_get_gravity_liquid (LIScrArgs* args)
  182. {
  183. LIMatVector tmp;
  184. liphy_object_get_gravity_liquid (args->self, &tmp);
  185. liscr_args_seti_vector (args, &tmp);
  186. }
  187. static void PhysicsObject_set_gravity_liquid (LIScrArgs* args)
  188. {
  189. LIMatVector vector;
  190. if (liscr_args_geti_vector (args, 0, &vector))
  191. liphy_object_set_gravity_liquid (args->self, &vector);
  192. }
  193. static void PhysicsObject_get_ground (LIScrArgs* args)
  194. {
  195. liscr_args_seti_bool (args, liphy_object_get_ground (args->self));
  196. }
  197. static void PhysicsObject_get_id (LIScrArgs* args)
  198. {
  199. liscr_args_seti_int (args, liphy_object_get_external_id (args->self));
  200. }
  201. static void PhysicsObject_set_id (LIScrArgs* args)
  202. {
  203. int value;
  204. if (liscr_args_geti_int (args, 0, &value))
  205. liphy_object_set_external_id (args->self, value);
  206. }
  207. static void PhysicsObject_get_mass (LIScrArgs* args)
  208. {
  209. liscr_args_seti_float (args, liphy_object_get_mass (args->self));
  210. }
  211. static void PhysicsObject_set_mass (LIScrArgs* args)
  212. {
  213. float value;
  214. if (liscr_args_geti_float (args, 0, &value) && value >= 0.0f)
  215. liphy_object_set_mass (args->self, value);
  216. }
  217. static void PhysicsObject_set_model (LIScrArgs* args)
  218. {
  219. LIExtPhysicsObjectModule* module;
  220. LIMdlModel* mdl_model;
  221. LIPhyModel* phy_model;
  222. LIScrData* value;
  223. if (liscr_args_geti_data (args, 0, LISCR_SCRIPT_MODEL, &value))
  224. {
  225. module = liscr_script_get_userdata (args->script, LIEXT_SCRIPT_PHYSICS_OBJECT);
  226. mdl_model = liscr_data_get_data (value);
  227. phy_model = liphy_physics_find_model (module->physics, mdl_model->id);
  228. liphy_object_set_model (args->self, phy_model);
  229. }
  230. else
  231. liphy_object_set_model (args->self, NULL);
  232. }
  233. static void PhysicsObject_get_movement (LIScrArgs* args)
  234. {
  235. liscr_args_seti_float (args, liphy_object_get_movement (args->self));
  236. }
  237. static void PhysicsObject_set_movement (LIScrArgs* args)
  238. {
  239. float value;
  240. if (liscr_args_geti_float (args, 0, &value))
  241. liphy_object_set_movement (args->self, value);
  242. }
  243. static void PhysicsObject_get_physics (LIScrArgs* args)
  244. {
  245. switch (liphy_object_get_control_mode (args->self))
  246. {
  247. case LIPHY_CONTROL_MODE_NONE:
  248. liscr_args_seti_string (args, "none");
  249. break;
  250. case LIPHY_CONTROL_MODE_CHARACTER:
  251. liscr_args_seti_string (args, "kinematic");
  252. break;
  253. case LIPHY_CONTROL_MODE_RIGID:
  254. liscr_args_seti_string (args, "rigid");
  255. break;
  256. case LIPHY_CONTROL_MODE_STATIC:
  257. liscr_args_seti_string (args, "static");
  258. break;
  259. case LIPHY_CONTROL_MODE_VEHICLE:
  260. liscr_args_seti_string (args, "vehicle");
  261. break;
  262. default:
  263. lisys_assert (0 && "invalid physics control mode");
  264. break;
  265. }
  266. }
  267. static void PhysicsObject_set_physics (LIScrArgs* args)
  268. {
  269. const char* str;
  270. if (liscr_args_geti_string (args, 0, &str))
  271. {
  272. if (!strcmp (str, "none"))
  273. liphy_object_set_control_mode (args->self, LIPHY_CONTROL_MODE_NONE);
  274. else if (!strcmp (str, "kinematic"))
  275. liphy_object_set_control_mode (args->self, LIPHY_CONTROL_MODE_CHARACTER);
  276. else if (!strcmp (str, "rigid"))
  277. liphy_object_set_control_mode (args->self, LIPHY_CONTROL_MODE_RIGID);
  278. else if (!strcmp (str, "static"))
  279. liphy_object_set_control_mode (args->self, LIPHY_CONTROL_MODE_STATIC);
  280. else if (!strcmp (str, "vehicle"))
  281. liphy_object_set_control_mode (args->self, LIPHY_CONTROL_MODE_VEHICLE);
  282. }
  283. }
  284. static void PhysicsObject_get_position (LIScrArgs* args)
  285. {
  286. LIMatTransform tmp;
  287. LIMatVector* v;
  288. LIScrData* data;
  289. if (liscr_args_geti_data (args, 0, LISCR_SCRIPT_VECTOR, &data))
  290. {
  291. liphy_object_get_transform (args->self, &tmp);
  292. v = liscr_data_get_data (data);
  293. *v = tmp.position;
  294. }
  295. }
  296. static void PhysicsObject_set_position (LIScrArgs* args)
  297. {
  298. LIMatTransform transform;
  299. LIMatVector vector;
  300. if (liscr_args_geti_vector (args, 0, &vector))
  301. {
  302. liphy_object_get_transform (args->self, &transform);
  303. transform.position = vector;
  304. liphy_object_set_transform (args->self, &transform);
  305. }
  306. }
  307. static void PhysicsObject_get_visible (LIScrArgs* args)
  308. {
  309. liscr_args_seti_bool (args, liphy_object_get_realized (args->self));
  310. }
  311. static void PhysicsObject_set_visible (LIScrArgs* args)
  312. {
  313. int value;
  314. if (liscr_args_geti_bool (args, 0, &value))
  315. liphy_object_set_realized (args->self, value);
  316. }
  317. static void PhysicsObject_get_rotation (LIScrArgs* args)
  318. {
  319. LIMatTransform tmp;
  320. LIMatQuaternion* q;
  321. LIScrData* data;
  322. if (liscr_args_geti_data (args, 0, LISCR_SCRIPT_QUATERNION, &data))
  323. {
  324. liphy_object_get_transform (args->self, &tmp);
  325. q = liscr_data_get_data (data);
  326. *q = tmp.rotation;
  327. }
  328. }
  329. static void PhysicsObject_set_rotation (LIScrArgs* args)
  330. {
  331. LIMatTransform transform;
  332. LIMatQuaternion quat;
  333. if (liscr_args_geti_quaternion (args, 0, &quat))
  334. {
  335. liphy_object_get_transform (args->self, &transform);
  336. transform.rotation = quat;
  337. limat_quaternion_normalize (transform.rotation);
  338. liphy_object_set_transform (args->self, &transform);
  339. }
  340. }
  341. static void PhysicsObject_get_shape (LIScrArgs* args)
  342. {
  343. liscr_args_seti_string (args, liphy_object_get_shape (args->self));
  344. }
  345. static void PhysicsObject_set_shape (LIScrArgs* args)
  346. {
  347. const char* value;
  348. if (liscr_args_geti_string (args, 0, &value))
  349. liphy_object_set_shape (args->self, value);
  350. }
  351. static void PhysicsObject_get_speed (LIScrArgs* args)
  352. {
  353. liscr_args_seti_float (args, liphy_object_get_speed (args->self));
  354. }
  355. static void PhysicsObject_set_speed (LIScrArgs* args)
  356. {
  357. float value;
  358. if (liscr_args_geti_float (args, 0, &value) && value >= 0.0f)
  359. liphy_object_set_speed (args->self, value);
  360. }
  361. static void PhysicsObject_get_strafing (LIScrArgs* args)
  362. {
  363. liscr_args_seti_float (args, liphy_object_get_strafing (args->self));
  364. }
  365. static void PhysicsObject_set_strafing (LIScrArgs* args)
  366. {
  367. float value;
  368. if (liscr_args_geti_float (args, 0, &value))
  369. liphy_object_set_strafing (args->self, value);
  370. }
  371. static void PhysicsObject_get_velocity (LIScrArgs* args)
  372. {
  373. LIMatVector* v;
  374. LIScrData* data;
  375. if (liscr_args_geti_data (args, 0, LISCR_SCRIPT_VECTOR, &data))
  376. {
  377. v = liscr_data_get_data (data);
  378. liphy_object_get_velocity (args->self, v);
  379. }
  380. }
  381. static void PhysicsObject_set_velocity (LIScrArgs* args)
  382. {
  383. LIMatVector vector;
  384. if (liscr_args_geti_vector (args, 0, &vector))
  385. liphy_object_set_velocity (args->self, &vector);
  386. }
  387. /*****************************************************************************/
  388. void liext_script_physics_object (
  389. LIScrScript* self)
  390. {
  391. liscr_script_insert_cfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_new", PhysicsObject_new);
  392. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_approach", PhysicsObject_approach);
  393. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_impulse", PhysicsObject_impulse);
  394. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_insert_hinge_constraint", PhysicsObject_insert_hinge_constraint);
  395. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_jump", PhysicsObject_jump);
  396. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_get_activated", PhysicsObject_get_activated);
  397. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_set_activated", PhysicsObject_set_activated);
  398. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_get_angular", PhysicsObject_get_angular);
  399. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_set_angular", PhysicsObject_set_angular);
  400. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_get_bounding_box", PhysicsObject_get_bounding_box);
  401. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_get_center_offset", PhysicsObject_get_center_offset);
  402. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_get_collision_group", PhysicsObject_get_collision_group);
  403. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_set_collision_group", PhysicsObject_set_collision_group);
  404. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_get_collision_mask", PhysicsObject_get_collision_mask);
  405. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_set_collision_mask", PhysicsObject_set_collision_mask);
  406. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_get_contact_events", PhysicsObject_get_contact_events);
  407. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_set_contact_events", PhysicsObject_set_contact_events);
  408. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_get_friction_liquid", PhysicsObject_get_friction_liquid);
  409. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_set_friction_liquid", PhysicsObject_set_friction_liquid);
  410. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_get_gravity", PhysicsObject_get_gravity);
  411. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_set_gravity", PhysicsObject_set_gravity);
  412. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_get_gravity_liquid", PhysicsObject_get_gravity_liquid);
  413. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_set_gravity_liquid", PhysicsObject_set_gravity_liquid);
  414. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_get_ground", PhysicsObject_get_ground);
  415. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_get_id", PhysicsObject_get_id);
  416. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_set_id", PhysicsObject_set_id);
  417. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_get_mass", PhysicsObject_get_mass);
  418. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_set_mass", PhysicsObject_set_mass);
  419. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_set_model", PhysicsObject_set_model);
  420. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_get_movement", PhysicsObject_get_movement);
  421. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_set_movement", PhysicsObject_set_movement);
  422. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_get_physics", PhysicsObject_get_physics);
  423. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_set_physics", PhysicsObject_set_physics);
  424. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_get_position", PhysicsObject_get_position);
  425. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_set_position", PhysicsObject_set_position);
  426. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_get_rotation", PhysicsObject_get_rotation);
  427. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_set_rotation", PhysicsObject_set_rotation);
  428. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_get_shape", PhysicsObject_get_shape);
  429. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_set_shape", PhysicsObject_set_shape);
  430. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_get_speed", PhysicsObject_get_speed);
  431. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_set_speed", PhysicsObject_set_speed);
  432. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_get_strafing", PhysicsObject_get_strafing);
  433. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_set_strafing", PhysicsObject_set_strafing);
  434. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_get_velocity", PhysicsObject_get_velocity);
  435. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_set_velocity", PhysicsObject_set_velocity);
  436. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_get_visible", PhysicsObject_get_visible);
  437. liscr_script_insert_mfunc (self, LIEXT_SCRIPT_PHYSICS_OBJECT, "physics_object_set_visible", PhysicsObject_set_visible);
  438. }
  439. /** @} */
  440. /** @} */