lua_matrix4x4_box.cpp 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /*
  2. * Copyright (c) 2012-2014 Daniele Bartolini and individual contributors.
  3. * License: https://github.com/taylor001/crown/blob/master/LICENSE
  4. */
  5. #include "matrix4x4.h"
  6. #include "vector3.h"
  7. #include "lua_stack.h"
  8. #include "lua_environment.h"
  9. #include "os.h"
  10. namespace crown
  11. {
  12. static int matrix4x4box_new(lua_State* L)
  13. {
  14. LuaStack stack(L);
  15. stack.push_matrix4x4box(stack.get_matrix4x4(1));
  16. return 1;
  17. }
  18. static int matrix4x4box_ctor(lua_State* L)
  19. {
  20. LuaStack stack(L);
  21. stack.remove(1); // Remove table
  22. return matrix4x4box_new(L);
  23. }
  24. static int matrix4x4box_store(lua_State* L)
  25. {
  26. LuaStack stack(L);
  27. stack.get_matrix4x4box(1) = stack.get_matrix4x4(2);
  28. return 0;
  29. }
  30. static int matrix4x4box_unbox(lua_State* L)
  31. {
  32. LuaStack stack(L);
  33. stack.push_matrix4x4(stack.get_matrix4x4box(1));
  34. return 1;
  35. }
  36. static int matrix4x4box_tostring(lua_State* L)
  37. {
  38. LuaStack stack(L);
  39. Matrix4x4& m = stack.get_matrix4x4box(1);
  40. stack.push_fstring("Matrix4x4Box (%p)", &m);
  41. return 1;
  42. }
  43. void load_matrix4x4box(LuaEnvironment& env)
  44. {
  45. env.load_module_function("Matrix4x4Box", "new", matrix4x4box_new);
  46. env.load_module_function("Matrix4x4Box", "store", matrix4x4box_store);
  47. env.load_module_function("Matrix4x4Box", "unbox", matrix4x4box_unbox);
  48. env.load_module_function("Matrix4x4Box", "__tostring", matrix4x4box_tostring);
  49. env.load_module_constructor("Matrix4x4Box", matrix4x4box_ctor);
  50. }
  51. } // namespace crown