BsRasterizerStateRTTI.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #pragma once
  2. #include "BsCorePrerequisites.h"
  3. #include "BsRTTIType.h"
  4. #include "BsRasterizerState.h"
  5. #include "BsRenderStateManager.h"
  6. namespace BansheeEngine
  7. {
  8. BS_ALLOW_MEMCPY_SERIALIZATION(RASTERIZER_STATE_DESC);
  9. class BS_CORE_EXPORT RasterizerStateRTTI : public RTTIType<RasterizerState, IReflectable, RasterizerStateRTTI>
  10. {
  11. private:
  12. RASTERIZER_STATE_DESC& getData(RasterizerState* obj) { return obj->mData; }
  13. void setData(RasterizerState* obj, RASTERIZER_STATE_DESC& val)
  14. {
  15. obj->mRTTIData = val;
  16. }
  17. public:
  18. RasterizerStateRTTI()
  19. {
  20. addPlainField("mData", 0, &RasterizerStateRTTI::getData, &RasterizerStateRTTI::setData);
  21. }
  22. virtual void onDeserializationEnded(IReflectable* obj)
  23. {
  24. RasterizerState* rasterizerState = static_cast<RasterizerState*>(obj);
  25. if(!rasterizerState->mRTTIData.empty())
  26. {
  27. RASTERIZER_STATE_DESC desc = any_cast<RASTERIZER_STATE_DESC>(rasterizerState->mRTTIData);
  28. rasterizerState->initialize(desc);
  29. }
  30. }
  31. virtual const String& getRTTIName()
  32. {
  33. static String name = "RasterizerState";
  34. return name;
  35. }
  36. virtual UINT32 getRTTIId()
  37. {
  38. return TID_RasterizerState;
  39. }
  40. virtual std::shared_ptr<IReflectable> newRTTIObject()
  41. {
  42. return RenderStateManager::instance().createEmptyRasterizerState();
  43. }
  44. };
  45. }