BsPassRTTI.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #pragma once
  2. #include "BsCorePrerequisites.h"
  3. #include "BsRTTIType.h"
  4. #include "BsPass.h"
  5. namespace BansheeEngine
  6. {
  7. class BS_CORE_EXPORT PassRTTI : public RTTIType<Pass, IReflectable, PassRTTI>
  8. {
  9. private:
  10. HBlendState& getBlendState(Pass* obj) { return obj->mBlendState; }
  11. void setBlendState(Pass* obj, HBlendState& val) { obj->mBlendState = val; }
  12. HRasterizerState& getRasterizerState(Pass* obj) { return obj->mRasterizerState; }
  13. void setRasterizerState(Pass* obj, HRasterizerState& val) { obj->mRasterizerState = val; }
  14. HDepthStencilState& getDepthStencilState(Pass* obj) { return obj->mDepthStencilState; }
  15. void setDepthStencilState(Pass* obj, HDepthStencilState& val) { obj->mDepthStencilState = val; }
  16. HGpuProgram& getVertexProgram(Pass* obj) { return obj->mVertexProgram; }
  17. void setVertexProgram(Pass* obj, HGpuProgram& val) { obj->mVertexProgram = val; }
  18. HGpuProgram& getFragmentProgram(Pass* obj) { return obj->mFragmentProgram; }
  19. void setFragmentProgram(Pass* obj, HGpuProgram& val) { obj->mFragmentProgram = val; }
  20. HGpuProgram& getGeometryProgram(Pass* obj) { return obj->mGeometryProgram; }
  21. void setGeometryProgram(Pass* obj, HGpuProgram& val) { obj->mGeometryProgram = val; }
  22. HGpuProgram& getHullProgram(Pass* obj) { return obj->mHullProgram; }
  23. void setHullProgram(Pass* obj, HGpuProgram& val) { obj->mHullProgram = val; }
  24. HGpuProgram& getDomainProgram(Pass* obj) { return obj->mDomainProgram; }
  25. void setDomainProgram(Pass* obj, HGpuProgram& val) { obj->mDomainProgram = val; }
  26. HGpuProgram& getComputeProgram(Pass* obj) { return obj->mComputeProgram; }
  27. void setComputeProgram(Pass* obj, HGpuProgram& val) { obj->mComputeProgram = val; }
  28. public:
  29. PassRTTI()
  30. {
  31. addReflectableField("mBlendState", 0, &PassRTTI::getBlendState, &PassRTTI::setBlendState);
  32. addReflectableField("mRasterizerState", 1, &PassRTTI::getRasterizerState, &PassRTTI::setRasterizerState);
  33. addReflectableField("mDepthStencilState", 2, &PassRTTI::getDepthStencilState, &PassRTTI::setDepthStencilState);
  34. addReflectableField("mVertexProgram", 3, &PassRTTI::getVertexProgram, &PassRTTI::setVertexProgram);
  35. addReflectableField("mFragmentProgram", 4, &PassRTTI::getFragmentProgram, &PassRTTI::setFragmentProgram);
  36. addReflectableField("mGeometryProgram", 5, &PassRTTI::getGeometryProgram, &PassRTTI::setGeometryProgram);
  37. addReflectableField("mHullProgram", 6, &PassRTTI::getHullProgram, &PassRTTI::setHullProgram);
  38. addReflectableField("mDomainProgram", 7, &PassRTTI::getDomainProgram, &PassRTTI::setDomainProgram);
  39. addReflectableField("mComputeProgram", 8, &PassRTTI::getComputeProgram, &PassRTTI::setComputeProgram);
  40. }
  41. virtual const String& getRTTIName()
  42. {
  43. static String name = "Pass";
  44. return name;
  45. }
  46. virtual UINT32 getRTTIId()
  47. {
  48. return TID_Pass;
  49. }
  50. virtual std::shared_ptr<IReflectable> newRTTIObject()
  51. {
  52. return bs_shared_ptr<Pass, PoolAlloc>();
  53. }
  54. };
  55. }