BsViewportRTTI.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #pragma once
  4. #include "BsCorePrerequisites.h"
  5. #include "BsRTTIType.h"
  6. #include "BsViewport.h"
  7. namespace BansheeEngine
  8. {
  9. /** @cond RTTI */
  10. /** @addtogroup RTTI-Impl-Core
  11. * @{
  12. */
  13. class BS_CORE_EXPORT ViewportRTTI : public RTTIType<Viewport, IReflectable, ViewportRTTI>
  14. {
  15. private:
  16. Rect2& getNormArea(Viewport* obj) { return obj->mNormArea; }
  17. void setNormArea(Viewport* obj, Rect2& val) { obj->mNormArea = val; }
  18. bool& getRequireColorClear(Viewport* obj) { return obj->mRequiresColorClear; }
  19. void setRequireColorClear(Viewport* obj, bool& val) { obj->mRequiresColorClear = val; }
  20. bool& getRequireDepthClear(Viewport* obj) { return obj->mRequiresDepthClear; }
  21. void setRequireDepthClear(Viewport* obj, bool& val) { obj->mRequiresDepthClear = val; }
  22. bool& getRequireStencilClear(Viewport* obj) { return obj->mRequiresStencilClear; }
  23. void setRequireStencilClear(Viewport* obj, bool& val) { obj->mRequiresStencilClear = val; }
  24. Color& getClearColor(Viewport* obj) { return obj->mClearColor; }
  25. void setClearColor(Viewport* obj, Color& val) { obj->mClearColor = val; }
  26. float& getDepthClearValue(Viewport* obj) { return obj->mDepthClearValue; }
  27. void setDepthClearValue(Viewport* obj, float& val) { obj->mDepthClearValue = val; }
  28. UINT16& getStencilClearValue(Viewport* obj) { return obj->mStencilClearValue; }
  29. void setStencilClearValue(Viewport* obj, UINT16& val) { obj->mStencilClearValue = val; }
  30. // TODO - Not saving a render target reference. Need to re-think the design on how to reference those. Likely as a handle to resource.
  31. public:
  32. ViewportRTTI()
  33. {
  34. addPlainField("mNormArea", 0, &ViewportRTTI::getNormArea, &ViewportRTTI::setNormArea);
  35. addPlainField("mRequiresColorClear", 1, &ViewportRTTI::getRequireColorClear, &ViewportRTTI::setRequireColorClear);
  36. addPlainField("mRequiresDepthClear", 2, &ViewportRTTI::getRequireDepthClear, &ViewportRTTI::setRequireDepthClear);
  37. addPlainField("mRequiresStencilClear", 3, &ViewportRTTI::getRequireStencilClear, &ViewportRTTI::setRequireStencilClear);
  38. addPlainField("mClearColor", 4, &ViewportRTTI::getClearColor, &ViewportRTTI::setClearColor);
  39. addPlainField("mDepthClearValue", 5, &ViewportRTTI::getDepthClearValue, &ViewportRTTI::setDepthClearValue);
  40. addPlainField("mStencilClearValue", 6, &ViewportRTTI::getStencilClearValue, &ViewportRTTI::setStencilClearValue);
  41. }
  42. void onDeserializationEnded(IReflectable* obj, const UnorderedMap<String, UINT64>& params) override
  43. {
  44. Viewport* viewport = static_cast<Viewport*>(obj);
  45. viewport->initialize();
  46. }
  47. const String& getRTTIName() override
  48. {
  49. static String name = "Viewport";
  50. return name;
  51. }
  52. UINT32 getRTTIId() override
  53. {
  54. return TID_Viewport;
  55. }
  56. SPtr<IReflectable> newRTTIObject() override
  57. {
  58. return Viewport::createEmpty();
  59. }
  60. };
  61. /** @} */
  62. /** @endcond */
  63. }