ScriptManager.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. // Copyright (C) 2009-2018, Panagiotis Christopoulos Charitos and contributors.
  2. // All rights reserved.
  3. // Code licensed under the BSD License.
  4. // http://www.anki3d.org/LICENSE
  5. #include <anki/script/ScriptManager.h>
  6. #include <anki/script/ScriptEnvironment.h>
  7. #include <anki/util/Logger.h>
  8. namespace anki
  9. {
  10. // Forward
  11. #define ANKI_SCRIPT_CALL_WRAP(x_) void wrapModule##x_(lua_State*)
  12. ANKI_SCRIPT_CALL_WRAP(Logger);
  13. ANKI_SCRIPT_CALL_WRAP(Math);
  14. ANKI_SCRIPT_CALL_WRAP(Renderer);
  15. ANKI_SCRIPT_CALL_WRAP(Scene);
  16. ANKI_SCRIPT_CALL_WRAP(Event);
  17. #undef ANKI_SCRIPT_CALL_WRAP
  18. ScriptManager::ScriptManager()
  19. {
  20. }
  21. ScriptManager::~ScriptManager()
  22. {
  23. ANKI_SCRIPT_LOGI("Destroying scripting engine...");
  24. }
  25. Error ScriptManager::init(AllocAlignedCallback allocCb, void* allocCbData)
  26. {
  27. ANKI_SCRIPT_LOGI("Initializing scripting engine...");
  28. m_alloc = ScriptAllocator(allocCb, allocCbData);
  29. ANKI_CHECK(m_lua.create(m_alloc, this));
  30. // Wrap stuff
  31. lua_State* l = m_lua.getLuaState();
  32. #define ANKI_SCRIPT_CALL_WRAP(x_) wrapModule##x_(l)
  33. ANKI_SCRIPT_CALL_WRAP(Logger);
  34. ANKI_SCRIPT_CALL_WRAP(Math);
  35. ANKI_SCRIPT_CALL_WRAP(Renderer);
  36. ANKI_SCRIPT_CALL_WRAP(Scene);
  37. ANKI_SCRIPT_CALL_WRAP(Event);
  38. #undef ANKI_SCRIPT_CALL_WRAP
  39. return Error::NONE;
  40. }
  41. Error ScriptManager::newScriptEnvironment(ScriptEnvironmentPtr& out)
  42. {
  43. out.reset(m_alloc.newInstance<ScriptEnvironment>(this));
  44. return out->init();
  45. }
  46. } // end namespace anki