BsRenderable.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #pragma once
  2. #include "BsPrerequisites.h"
  3. #include "BsRenderableHandler.h"
  4. #include "BsBounds.h"
  5. #include "BsComponent.h"
  6. namespace BansheeEngine
  7. {
  8. /**
  9. * @copydoc RenderableHandler
  10. */
  11. class BS_EXPORT Renderable : public Component
  12. {
  13. public:
  14. /**
  15. * @copydoc RenderableHandler::setMesh
  16. */
  17. void setMesh(HMesh mesh) { mInternal->setMesh(mesh); }
  18. /**
  19. * @copydoc RenderableHandler::setMaterial
  20. */
  21. void setMaterial(UINT32 idx, HMaterial material) { mInternal->setMaterial(idx, material); }
  22. /**
  23. * @copydoc RenderableHandler::setMaterial
  24. */
  25. void setMaterial(HMaterial material) { mInternal->setMaterial(material); }
  26. /**
  27. * @copydoc RenderableHandler::setLayer
  28. */
  29. void setLayer(UINT64 layer) { mInternal->setLayer(layer); }
  30. /**
  31. * @copydoc RenderableHandler::getLayer
  32. */
  33. UINT64 getLayer() const { return mInternal->getLayer(); }
  34. /**
  35. * @copydoc RenderableHandler::getMesh
  36. */
  37. HMesh getMesh() const { return mInternal->getMesh(); }
  38. /**
  39. * @copydoc RenderableHandler::getMaterial
  40. */
  41. HMaterial getMaterial(UINT32 idx) const { return mInternal->getMaterial(idx); }
  42. /**
  43. * @brief Gets world bounds of the mesh rendered by this object.
  44. */
  45. Bounds getBounds() const;
  46. /**
  47. * @brief Returns the internal renderable handler that is used for
  48. * majority of operations by this component.
  49. */
  50. RenderableHandlerPtr _getHandler() const { return mInternal; }
  51. private:
  52. /**
  53. * @brief Updates the world transform if the SceneObject transform changed.
  54. */
  55. void updateTransform() const;
  56. mutable RenderableHandlerPtr mInternal;
  57. mutable UINT32 mLastUpdateHash;
  58. /************************************************************************/
  59. /* COMPONENT OVERRIDES */
  60. /************************************************************************/
  61. protected:
  62. friend class SceneObject;
  63. Renderable(const HSceneObject& parent);
  64. /**
  65. * @copydoc Component::onDestroyed
  66. */
  67. void onDestroyed();
  68. public:
  69. /**
  70. * @copydoc Component::update
  71. */
  72. virtual void update();
  73. /************************************************************************/
  74. /* RTTI */
  75. /************************************************************************/
  76. public:
  77. friend class RenderableRTTI;
  78. static RTTITypeBase* getRTTIStatic();
  79. virtual RTTITypeBase* getRTTI() const;
  80. protected:
  81. Renderable() {} // Serialization only
  82. };
  83. }