BsDepthStencilStateRTTI.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #pragma once
  2. #include "BsCorePrerequisites.h"
  3. #include "BsRTTIType.h"
  4. #include "BsDepthStencilState.h"
  5. #include "BsRenderStateManager.h"
  6. namespace BansheeEngine
  7. {
  8. class BS_CORE_EXPORT DepthStencilStateRTTI : public RTTIType<DepthStencilState, IReflectable, DepthStencilStateRTTI>
  9. {
  10. private:
  11. DEPTH_STENCIL_STATE_DESC& getData(DepthStencilState* obj) { return obj->mProperties.mData; }
  12. void setData(DepthStencilState* obj, DEPTH_STENCIL_STATE_DESC& val) { obj->mProperties.mData = val; }
  13. public:
  14. DepthStencilStateRTTI()
  15. {
  16. addPlainField("mData", 0, &DepthStencilStateRTTI::getData, &DepthStencilStateRTTI::setData);
  17. }
  18. virtual void onDeserializationEnded(IReflectable* obj) override
  19. {
  20. DepthStencilState* depthStencilState = static_cast<DepthStencilState*>(obj);
  21. depthStencilState->initialize();
  22. }
  23. virtual const String& getRTTIName() override
  24. {
  25. static String name = "DepthStencilState";
  26. return name;
  27. }
  28. virtual UINT32 getRTTIId() override
  29. {
  30. return TID_DepthStencilState;
  31. }
  32. virtual std::shared_ptr<IReflectable> newRTTIObject() override
  33. {
  34. return RenderStateManager::instance()._createDepthStencilStatePtr(DEPTH_STENCIL_STATE_DESC());
  35. }
  36. };
  37. }