BsRasterizerStateRTTI.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. //__________________________ Banshee Project - A modern game development toolkit _________________________________//
  2. //_____________________________________ www.banshee-project.com __________________________________________________//
  3. //________________________ Copyright (c) 2014 Marko Pintera. All rights reserved. ________________________________//
  4. #pragma once
  5. #include "BsCorePrerequisites.h"
  6. #include "BsRTTIType.h"
  7. #include "BsRasterizerState.h"
  8. #include "BsRenderStateManager.h"
  9. namespace BansheeEngine
  10. {
  11. BS_ALLOW_MEMCPY_SERIALIZATION(RASTERIZER_STATE_DESC);
  12. class BS_CORE_EXPORT RasterizerStateRTTI : public RTTIType<RasterizerState, IReflectable, RasterizerStateRTTI>
  13. {
  14. private:
  15. RASTERIZER_STATE_DESC& getData(RasterizerState* obj) { return obj->mData; }
  16. void setData(RasterizerState* obj, RASTERIZER_STATE_DESC& val)
  17. {
  18. obj->mRTTIData = val;
  19. }
  20. public:
  21. RasterizerStateRTTI()
  22. {
  23. addPlainField("mData", 0, &RasterizerStateRTTI::getData, &RasterizerStateRTTI::setData);
  24. }
  25. virtual void onDeserializationEnded(IReflectable* obj)
  26. {
  27. RasterizerState* rasterizerState = static_cast<RasterizerState*>(obj);
  28. if(!rasterizerState->mRTTIData.empty())
  29. {
  30. RASTERIZER_STATE_DESC desc = any_cast<RASTERIZER_STATE_DESC>(rasterizerState->mRTTIData);
  31. rasterizerState->initialize(desc);
  32. }
  33. }
  34. virtual const String& getRTTIName()
  35. {
  36. static String name = "RasterizerState";
  37. return name;
  38. }
  39. virtual UINT32 getRTTIId()
  40. {
  41. return TID_RasterizerState;
  42. }
  43. virtual std::shared_ptr<IReflectable> newRTTIObject()
  44. {
  45. return RenderStateManager::instance().createEmptyRasterizerState();
  46. }
  47. };
  48. }