BsCameraRTTI.h 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #pragma once
  4. #include "BsPrerequisites.h"
  5. #include "BsRTTIType.h"
  6. #include "BsCamera.h"
  7. namespace BansheeEngine
  8. {
  9. /** @cond RTTI */
  10. /** @addtogroup RTTI-Impl-Engine
  11. * @{
  12. */
  13. class BS_EXPORT CameraRTTI : public RTTIType <Camera, IReflectable, CameraRTTI>
  14. {
  15. private:
  16. SPtr<Viewport> getViewport(Camera* obj) { return obj->mViewport; }
  17. void setViewport(Camera* obj, SPtr<Viewport> val) { obj->mViewport = val; }
  18. UINT64& getLayers(Camera* obj) { return obj->mLayers; }
  19. void setLayers(Camera* obj, UINT64& val) { obj->mLayers = val; }
  20. UINT8& getMSAACount(Camera* obj) { return obj->mMSAA; }
  21. void setMSAACount(Camera* obj, UINT8& msaaCount) { obj->mMSAA = msaaCount; }
  22. PostProcessSettings& getPostProcessSettings(Camera* obj) { return obj->mPPSettings; }
  23. void setPostProcessSettings(Camera* obj, PostProcessSettings& settings) { obj->mPPSettings = settings; }
  24. CameraFlags& getFlags(Camera* obj) { return obj->mCameraFlags; }
  25. void setFlags(Camera* obj, CameraFlags& val) { obj->mCameraFlags = val; }
  26. Vector3& getPosition(Camera* obj) { return obj->mPosition; }
  27. void setPosition(Camera* obj, Vector3& val) { obj->mPosition = val; }
  28. Quaternion& getRotation(Camera* obj) { return obj->mRotation; }
  29. void setRotation(Camera* obj, Quaternion& val) { obj->mRotation = val; }
  30. ProjectionType& getProjType(Camera* obj) { return obj->mProjType; }
  31. void setProjType(Camera* obj, ProjectionType& val) { obj->mProjType = val; }
  32. Radian& getHorzFOV(Camera* obj) { return obj->mHorzFOV; }
  33. void setHorzFOV(Camera* obj, Radian& val) { obj->mHorzFOV = val; }
  34. float& getFarDist(Camera* obj) { return obj->mFarDist; }
  35. void setFarDist(Camera* obj, float& val) { obj->mFarDist = val; }
  36. float& getNearDist(Camera* obj) { return obj->mNearDist; }
  37. void setNearDist(Camera* obj, float& val) { obj->mNearDist = val; }
  38. float& getAspect(Camera* obj) { return obj->mAspect; }
  39. void setAspect(Camera* obj, float& val) { obj->mAspect = val; }
  40. float& getOrthoHeight(Camera* obj) { return obj->mOrthoHeight; }
  41. void setOrthoHeight(Camera* obj, float& val) { obj->mOrthoHeight = val; }
  42. INT32& getPriority(Camera* obj) { return obj->mPriority; }
  43. void setPriority(Camera* obj, INT32& val) { obj->mPriority = val; }
  44. bool& getCustomViewMatrix(Camera* obj) { return obj->mCustomViewMatrix; }
  45. void setCustomViewMatrix(Camera* obj, bool& val) { obj->mCustomViewMatrix = val; }
  46. bool& getCustomProjMatrix(Camera* obj) { return obj->mCustomProjMatrix; }
  47. void setCustomProjMatrix(Camera* obj, bool& val) { obj->mCustomProjMatrix = val; }
  48. bool& getFrustumManual(Camera* obj) { return obj->mFrustumExtentsManuallySet; }
  49. void setFrustumManual(Camera* obj, bool& val) { obj->mFrustumExtentsManuallySet = val; }
  50. Matrix4& getProjMatrix(Camera* obj) { return obj->mProjMatrix; }
  51. void setProjMatrix(Camera* obj, Matrix4& val) { obj->mProjMatrix = val; }
  52. Matrix4& getProjMatrixRS(Camera* obj) { return obj->mProjMatrixRS; }
  53. void setProjMatrixRS(Camera* obj, Matrix4& val) { obj->mProjMatrixRS = val; }
  54. Matrix4& getViewMatrix(Camera* obj) { return obj->mViewMatrix; }
  55. void setViewMatrix(Camera* obj, Matrix4& val) { obj->mViewMatrix = val; }
  56. float& getLeft(Camera* obj) { return obj->mLeft; }
  57. void setLeft(Camera* obj, float& val) { obj->mLeft = val; }
  58. float& getRight(Camera* obj) { return obj->mRight; }
  59. void setRight(Camera* obj, float& val) { obj->mRight = val; }
  60. float& getTop(Camera* obj) { return obj->mTop; }
  61. void setTop(Camera* obj, float& val) { obj->mTop = val; }
  62. float& getBottom(Camera* obj) { return obj->mBottom; }
  63. void setBottom(Camera* obj, float& val) { obj->mBottom = val; }
  64. public:
  65. CameraRTTI()
  66. {
  67. addReflectablePtrField("mViewport", 0, &CameraRTTI::getViewport, &CameraRTTI::setViewport);
  68. addPlainField("mLayers", 1, &CameraRTTI::getLayers, &CameraRTTI::setLayers);
  69. addPlainField("mPosition", 2, &CameraRTTI::getPosition, &CameraRTTI::setPosition);
  70. addPlainField("mRotation", 3, &CameraRTTI::getRotation, &CameraRTTI::setRotation);
  71. addPlainField("mProjType", 4, &CameraRTTI::getProjType, &CameraRTTI::setProjType);
  72. addPlainField("mHorzFOV", 5, &CameraRTTI::getHorzFOV, &CameraRTTI::setHorzFOV);
  73. addPlainField("mFarDist", 6, &CameraRTTI::getFarDist, &CameraRTTI::setFarDist);
  74. addPlainField("mNearDist", 7, &CameraRTTI::getNearDist, &CameraRTTI::setNearDist);
  75. addPlainField("mAspect", 8, &CameraRTTI::getAspect, &CameraRTTI::setAspect);
  76. addPlainField("mOrthoHeight", 9, &CameraRTTI::getOrthoHeight, &CameraRTTI::setOrthoHeight);
  77. addPlainField("mPriority", 10, &CameraRTTI::getPriority, &CameraRTTI::setPriority);
  78. addPlainField("mCustomViewMatrix", 11, &CameraRTTI::getCustomViewMatrix, &CameraRTTI::setCustomViewMatrix);
  79. addPlainField("mCustomProjMatrix", 12, &CameraRTTI::getCustomProjMatrix, &CameraRTTI::setCustomProjMatrix);
  80. addPlainField("mFrustumExtentsManuallySet", 13, &CameraRTTI::getFrustumManual, &CameraRTTI::setFrustumManual);
  81. addPlainField("mProjMatrixRS", 15, &CameraRTTI::getProjMatrixRS, &CameraRTTI::setProjMatrixRS);
  82. addPlainField("mProjMatrix", 16, &CameraRTTI::getProjMatrix, &CameraRTTI::setProjMatrix);
  83. addPlainField("mViewMatrix", 17, &CameraRTTI::getViewMatrix, &CameraRTTI::setViewMatrix);
  84. addPlainField("mLeft", 18, &CameraRTTI::getLeft, &CameraRTTI::setLeft);
  85. addPlainField("mRight", 19, &CameraRTTI::getRight, &CameraRTTI::setRight);
  86. addPlainField("mTop", 20, &CameraRTTI::getTop, &CameraRTTI::setTop);
  87. addPlainField("mBottom", 21, &CameraRTTI::getBottom, &CameraRTTI::setBottom);
  88. addPlainField("mFlags", 22, &CameraRTTI::getFlags, &CameraRTTI::setFlags);
  89. addPlainField("mMSAA", 23, &CameraRTTI::getMSAACount, &CameraRTTI::setMSAACount);
  90. addPlainField("mPPSettings", 24, &CameraRTTI::getPostProcessSettings, &CameraRTTI::setPostProcessSettings);
  91. }
  92. void onDeserializationEnded(IReflectable* obj, const UnorderedMap<String, UINT64>& params) override
  93. {
  94. // Note: Since this is a CoreObject I should call initialize() right after deserialization,
  95. // but since this specific type is used in Components we delay initialization until Component
  96. // itself does it. Keep this is mind in case this ever needs to be deserialized for non-Component
  97. // purposes (you'll need to call initialize manually).
  98. }
  99. const String& getRTTIName() override
  100. {
  101. static String name = "Camera";
  102. return name;
  103. }
  104. UINT32 getRTTIId() override
  105. {
  106. return TID_Camera;
  107. }
  108. SPtr<IReflectable> newRTTIObject() override
  109. {
  110. return Camera::createEmpty();
  111. }
  112. };
  113. BS_ALLOW_MEMCPY_SERIALIZATION(CameraFlags);
  114. /** @} */
  115. /** @endcond */
  116. }