BsRendererExtension.cpp 989 B

123456789101112131415161718192021222324252627282930313233343536
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "Renderer/BsRendererExtension.h"
  4. #include "CoreThread/BsCoreThread.h"
  5. #include "Renderer/BsRendererManager.h"
  6. #include "Renderer/BsRenderer.h"
  7. namespace bs
  8. {
  9. void RendererExtension::_initializer(RendererExtension* obj, const Any& data)
  10. {
  11. auto coreInitializer = [=]()
  12. {
  13. RendererManager::instance().getActive()->addPlugin(obj);
  14. obj->initialize(data);
  15. };
  16. gCoreThread().queueCommand(coreInitializer);
  17. }
  18. void RendererExtension::_deleter(RendererExtension* obj)
  19. {
  20. auto deleteObj = [=]()
  21. {
  22. RendererManager::instance().getActive()->removePlugin(obj);
  23. obj->destroy();
  24. obj->~RendererExtension();
  25. bs_free(obj);
  26. };
  27. // Queue deletion on the core thread
  28. gCoreThread().queueCommand(deleteObj);
  29. }
  30. }