BsViewportRTTI.h 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #pragma once
  2. #include "BsCorePrerequisites.h"
  3. #include "BsRTTIType.h"
  4. #include "BsViewport.h"
  5. namespace BansheeEngine
  6. {
  7. class BS_CORE_EXPORT ViewportRTTI : public RTTIType<Viewport, IReflectable, ViewportRTTI>
  8. {
  9. private:
  10. Rect2& getNormArea(Viewport* obj) { return obj->mNormArea; }
  11. void setNormArea(Viewport* obj, Rect2& val) { obj->mNormArea = val; }
  12. bool& getRequireColorClear(Viewport* obj) { return obj->mRequiresColorClear; }
  13. void setRequireColorClear(Viewport* obj, bool& val) { obj->mRequiresColorClear = val; }
  14. bool& getRequireDepthClear(Viewport* obj) { return obj->mRequiresDepthClear; }
  15. void setRequireDepthClear(Viewport* obj, bool& val) { obj->mRequiresDepthClear = val; }
  16. bool& getRequireStencilClear(Viewport* obj) { return obj->mRequiresStencilClear; }
  17. void setRequireStencilClear(Viewport* obj, bool& val) { obj->mRequiresStencilClear = val; }
  18. Color& getClearColor(Viewport* obj) { return obj->mClearColor; }
  19. void setClearColor(Viewport* obj, Color& val) { obj->mClearColor = val; }
  20. float& getDepthClearValue(Viewport* obj) { return obj->mDepthClearValue; }
  21. void setDepthClearValue(Viewport* obj, float& val) { obj->mDepthClearValue = val; }
  22. UINT16& getStencilClearValue(Viewport* obj) { return obj->mStencilClearValue; }
  23. void setStencilClearValue(Viewport* obj, UINT16& val) { obj->mStencilClearValue = val; }
  24. // TODO - Not saving a render target reference. Need to re-think the design on how to reference those. Likely as a handle to resource.
  25. public:
  26. ViewportRTTI()
  27. {
  28. addPlainField("mNormArea", 0, &ViewportRTTI::getNormArea, &ViewportRTTI::setNormArea);
  29. addPlainField("mRequiresColorClear", 1, &ViewportRTTI::getRequireColorClear, &ViewportRTTI::setRequireColorClear);
  30. addPlainField("mRequiresDepthClear", 2, &ViewportRTTI::getRequireDepthClear, &ViewportRTTI::setRequireDepthClear);
  31. addPlainField("mRequiresStencilClear", 3, &ViewportRTTI::getRequireStencilClear, &ViewportRTTI::setRequireStencilClear);
  32. addPlainField("mClearColor", 4, &ViewportRTTI::getClearColor, &ViewportRTTI::setClearColor);
  33. addPlainField("mDepthClearValue", 5, &ViewportRTTI::getDepthClearValue, &ViewportRTTI::setDepthClearValue);
  34. addPlainField("mStencilClearValue", 6, &ViewportRTTI::getStencilClearValue, &ViewportRTTI::setStencilClearValue);
  35. }
  36. virtual void onDeserializationEnded(IReflectable* obj)
  37. {
  38. Viewport* viewport = static_cast<Viewport*>(obj);
  39. viewport->initialize();
  40. }
  41. virtual const String& getRTTIName()
  42. {
  43. static String name = "Viewport";
  44. return name;
  45. }
  46. virtual UINT32 getRTTIId()
  47. {
  48. return TID_Viewport;
  49. }
  50. virtual std::shared_ptr<IReflectable> newRTTIObject()
  51. {
  52. return Viewport::createEmpty();
  53. }
  54. };
  55. }