BsD3D9RenderWindowManager.cpp 1.7 KB

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