BsCLightProbeVolume.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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 "Renderer/BsLightProbeVolume.h"
  6. #include "Scene/BsComponent.h"
  7. namespace bs
  8. {
  9. /** @addtogroup Components
  10. * @{
  11. */
  12. /**
  13. * @copydoc LightProbeVolume
  14. *
  15. * @note Wraps LightProbeVolume as a Component.
  16. */
  17. class BS_CORE_EXPORT BS_SCRIPT_EXPORT(m:Rendering,n:LightProbeVolume) CLightProbeVolume : public Component
  18. {
  19. public:
  20. CLightProbeVolume(const HSceneObject& parent, const AABox& volume = AABox::UNIT_BOX,
  21. const Vector3I& cellCount = Vector3I(1, 1, 1));
  22. virtual ~CLightProbeVolume();
  23. /** @copydoc LightProbeVolume::addProbe() */
  24. BS_SCRIPT_EXPORT()
  25. UINT32 addProbe(const Vector3& position) { return mInternal->addProbe(position); }
  26. /** @copydoc LightProbeVolume::setProbePosition() */
  27. BS_SCRIPT_EXPORT()
  28. void setProbePosition(UINT32 handle, const Vector3& position) { mInternal->setProbePosition(handle, position); }
  29. /** @copydoc LightProbeVolume::getProbePosition() */
  30. BS_SCRIPT_EXPORT()
  31. Vector3 getProbePosition(UINT32 handle) const { return mInternal->getProbePosition(handle); }
  32. /** @copydoc LightProbeVolume::removeProbe() */
  33. BS_SCRIPT_EXPORT()
  34. void removeProbe(UINT32 handle) { mInternal->removeProbe(handle); }
  35. /** @copydoc LightProbeVolume::getProbes() */
  36. BS_SCRIPT_EXPORT()
  37. Vector<LightProbeInfo> getProbes() const;
  38. /** @copydoc LightProbeVolume::renderProbe() */
  39. BS_SCRIPT_EXPORT()
  40. void renderProbe(UINT32 handle);
  41. /** @copydoc LightProbeVolume::renderProbes() */
  42. BS_SCRIPT_EXPORT()
  43. void renderProbes();
  44. /** @copydoc LightProbeVolume::resize() */
  45. BS_SCRIPT_EXPORT()
  46. void resize(const AABox& volume, const Vector3I& cellCount = Vector3I(1, 1, 1)) { mInternal->resize(volume, cellCount); }
  47. /** @copydoc LightProbeVolume::clip() */
  48. BS_SCRIPT_EXPORT()
  49. void clip() { mInternal->clip(); }
  50. /** @copydoc LightProbeVolume::reset() */
  51. BS_SCRIPT_EXPORT()
  52. void reset() { mInternal->reset(); }
  53. /** @copydoc LightProbeVolume::getGridVolume() */
  54. BS_SCRIPT_EXPORT(n:GridVolume,pr:getter)
  55. const AABox& getGridVolume() const { return mVolume; }
  56. /** @copydoc LightProbeVolume::getCellCount() */
  57. BS_SCRIPT_EXPORT(n:CellCount,pr:getter)
  58. const Vector3I& getCellCount() const { return mCellCount; }
  59. /** @name Internal
  60. * @{
  61. */
  62. /** Returns the light probe volume that this component wraps. */
  63. SPtr<LightProbeVolume> _getInternal() const { return mInternal; }
  64. /** @} */
  65. protected:
  66. mutable SPtr<LightProbeVolume> mInternal;
  67. // Only valid during construction
  68. AABox mVolume;
  69. Vector3I mCellCount;
  70. /************************************************************************/
  71. /* COMPONENT OVERRIDES */
  72. /************************************************************************/
  73. protected:
  74. friend class SceneObject;
  75. /** @copydoc Component::onInitialized */
  76. void onInitialized() override;
  77. /** @copydoc Component::onDestroyed */
  78. void onDestroyed() override;
  79. /** @copydoc Component::update */
  80. void update() override { }
  81. /************************************************************************/
  82. /* RTTI */
  83. /************************************************************************/
  84. public:
  85. friend class CLightProbeVolumeRTTI;
  86. static RTTITypeBase* getRTTIStatic();
  87. RTTITypeBase* getRTTI() const override;
  88. protected:
  89. CLightProbeVolume(); // Serialization only
  90. };
  91. /** @} */
  92. }