BsD3D9RenderWindowManager.cpp 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #include "BsD3D9RenderWindowManager.h"
  2. #include "BsD3D9RenderAPI.h"
  3. #include "BsD3D9RenderWindow.h"
  4. #include "BsAsyncOp.h"
  5. namespace BansheeEngine
  6. {
  7. D3D9RenderWindowManager::D3D9RenderWindowManager(D3D9RenderAPI* renderSystem)
  8. :mRenderSystem(renderSystem)
  9. {
  10. assert(mRenderSystem != nullptr);
  11. }
  12. RenderWindowPtr D3D9RenderWindowManager::createImpl(RENDER_WINDOW_DESC& desc, const RenderWindowPtr& parentWindow)
  13. {
  14. if(parentWindow != nullptr)
  15. {
  16. UINT64 hWnd;
  17. parentWindow->getCustomAttribute("WINDOW", &hWnd);
  18. desc.platformSpecific["parentWindowHandle"] = toString(hWnd);
  19. }
  20. D3D9RenderWindow* window = new (bs_alloc<D3D9RenderWindow, PoolAlloc>()) D3D9RenderWindow(desc, mRenderSystem->getInstanceHandle());
  21. return RenderWindowPtr(window, &CoreObject::_delete<D3D9RenderWindow, PoolAlloc>);
  22. }
  23. D3D9RenderWindowCoreManager::D3D9RenderWindowCoreManager(D3D9RenderAPI* renderSystem)
  24. :mRenderSystem(renderSystem)
  25. {
  26. assert(mRenderSystem != nullptr);
  27. }
  28. SPtr<RenderWindowCore> D3D9RenderWindowCoreManager::createInternal(RENDER_WINDOW_DESC& desc)
  29. {
  30. D3D9RenderWindowCore* window = new (bs_alloc<D3D9RenderWindowCore, GenAlloc>()) D3D9RenderWindowCore(desc, mRenderSystem->getInstanceHandle());
  31. SPtr<D3D9RenderWindowCore> renderWindowPtr = bs_shared_ptr<D3D9RenderWindowCore, GenAlloc>(window);
  32. renderWindowPtr->_setThisPtr(renderWindowPtr);
  33. windowCreated(window);
  34. return renderWindowPtr;
  35. }
  36. }