BsRasterizerStateRTTI.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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 "BsRasterizerState.h"
  7. #include "BsRenderStateManager.h"
  8. namespace BansheeEngine
  9. {
  10. /** @cond RTTI */
  11. /** @addtogroup RTTI-Impl-Core
  12. * @{
  13. */
  14. BS_ALLOW_MEMCPY_SERIALIZATION(RASTERIZER_STATE_DESC);
  15. class BS_CORE_EXPORT RasterizerStateRTTI : public RTTIType<RasterizerState, IReflectable, RasterizerStateRTTI>
  16. {
  17. private:
  18. RASTERIZER_STATE_DESC& getData(RasterizerState* obj) { return obj->mProperties.mData; }
  19. void setData(RasterizerState* obj, RASTERIZER_STATE_DESC& val) { obj->mProperties.mData = val; }
  20. public:
  21. RasterizerStateRTTI()
  22. {
  23. addPlainField("mData", 0, &RasterizerStateRTTI::getData, &RasterizerStateRTTI::setData);
  24. }
  25. void onDeserializationEnded(IReflectable* obj, const UnorderedMap<String, UINT64>& params) override
  26. {
  27. RasterizerState* rasterizerState = static_cast<RasterizerState*>(obj);
  28. rasterizerState->initialize();
  29. }
  30. const String& getRTTIName() override
  31. {
  32. static String name = "RasterizerState";
  33. return name;
  34. }
  35. UINT32 getRTTIId() override
  36. {
  37. return TID_RasterizerState;
  38. }
  39. SPtr<IReflectable> newRTTIObject() override
  40. {
  41. return RenderStateManager::instance()._createRasterizerStatePtr(RASTERIZER_STATE_DESC());
  42. }
  43. };
  44. /** @} */
  45. /** @endcond */
  46. }