BsSelectionRenderer.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #pragma once
  2. #include "BsEditorPrerequisites.h"
  3. #include "BsColor.h"
  4. #include "BsMatrix4.h"
  5. #include "BsGpuParam.h"
  6. namespace BansheeEngine
  7. {
  8. class SelectionRendererCore;
  9. class SelectionRenderer
  10. {
  11. struct ObjectData
  12. {
  13. SPtr<MeshCoreBase> mesh;
  14. Matrix4 worldTfrm;
  15. };
  16. public:
  17. SelectionRenderer();
  18. ~SelectionRenderer();
  19. void update(const CameraHandlerPtr& camera);
  20. private:
  21. friend class SelectionRendererCore;
  22. void initializeCore(const SPtr<MaterialCore>& mat);
  23. void destroyCore(SelectionRendererCore* core);
  24. SelectionRendererCore* mCore;
  25. };
  26. class SelectionRendererCore
  27. {
  28. friend class SelectionRenderer;
  29. struct PrivatelyConstuct { };
  30. public:
  31. SelectionRendererCore(const PrivatelyConstuct& dummy);
  32. private:
  33. void initialize(const SPtr<MaterialCore>& mat);
  34. void render(const CameraHandlerCore& camera);
  35. void updateData(const SPtr<RenderTargetCore>& rt, const Vector<SelectionRenderer::ObjectData>& objects);
  36. SPtr<RenderTargetCore> mSceneRenderTarget;
  37. Vector<SelectionRenderer::ObjectData> mObjects;
  38. // Immutable
  39. SPtr<MaterialCore> mMaterial;
  40. GpuParamMat4Core mMatWorldViewProj;
  41. GpuParamColorCore mColor;
  42. static const Color SELECTION_COLOR;
  43. };
  44. }