lua_debug_line.cpp 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /*
  2. * Copyright (c) 2012-2015 Daniele Bartolini and individual contributors.
  3. * License: https://github.com/taylor001/crown/blob/master/LICENSE
  4. */
  5. #include "lua_stack.h"
  6. #include "lua_environment.h"
  7. #include "debug_line.h"
  8. #include "vector3.h"
  9. #include "color4.h"
  10. namespace crown
  11. {
  12. static int debug_line_add_line(lua_State* L)
  13. {
  14. LuaStack stack(L);
  15. stack.get_debug_line(1)->add_line(stack.get_vector3(2), stack.get_vector3(3), stack.get_color4(4));
  16. return 0;
  17. }
  18. static int debug_line_add_axes(lua_State* L)
  19. {
  20. LuaStack stack(L);
  21. const float length = stack.num_args() == 3 ? stack.get_float(3) : 1.0f;
  22. stack.get_debug_line(1)->add_axes(stack.get_matrix4x4(2), length);
  23. return 0;
  24. }
  25. static int debug_line_add_cone(lua_State* L)
  26. {
  27. LuaStack stack(L);
  28. stack.get_debug_line(1)->add_cone(stack.get_vector3(2), stack.get_vector3(3), stack.get_float(4), stack.get_color4(5));
  29. return 0;
  30. }
  31. static int debug_line_add_sphere(lua_State* L)
  32. {
  33. LuaStack stack(L);
  34. stack.get_debug_line(1)->add_sphere(stack.get_vector3(2), stack.get_float(3), stack.get_color4(4));
  35. return 0;
  36. }
  37. static int debug_line_add_obb(lua_State* L)
  38. {
  39. LuaStack stack(L);
  40. stack.get_debug_line(1)->add_obb(stack.get_matrix4x4(2), stack.get_vector3(3), stack.get_color4(4));
  41. return 0;
  42. }
  43. static int debug_line_clear(lua_State* L)
  44. {
  45. LuaStack stack(L);
  46. stack.get_debug_line(1)->clear();
  47. return 0;
  48. }
  49. static int debug_line_commit(lua_State* L)
  50. {
  51. LuaStack stack(L);
  52. stack.get_debug_line(1)->commit();
  53. return 0;
  54. }
  55. static int debug_line_tostring(lua_State* L)
  56. {
  57. LuaStack stack(L);
  58. stack.push_fstring("DebugLine (%p)", stack.get_debug_line(1));
  59. return 1;
  60. }
  61. void load_debug_line(LuaEnvironment& env)
  62. {
  63. env.load_module_function("DebugLine", "add_line", debug_line_add_line);
  64. env.load_module_function("DebugLine", "add_axes", debug_line_add_axes);
  65. env.load_module_function("DebugLine", "add_cone", debug_line_add_cone);
  66. env.load_module_function("DebugLine", "add_sphere", debug_line_add_sphere);
  67. env.load_module_function("DebugLine", "add_obb", debug_line_add_obb);
  68. env.load_module_function("DebugLine", "clear", debug_line_clear);
  69. env.load_module_function("DebugLine", "commit", debug_line_commit);
  70. env.load_module_function("DebugLine", "__index", "DebugLine");
  71. env.load_module_function("DebugLine", "__tostring", debug_line_tostring);
  72. }
  73. } // namespace crown