Add CastShadow and ReceiveShadow for Model and ModelNode
[platform/core/uifw/dali-toolkit.git] / dali-scene3d / internal / controls / model / model-impl.h
index 5a9633b..d82fa8f 100644 (file)
@@ -174,6 +174,26 @@ public:
   void SetMotionData(Scene3D::MotionData motionData);
 
   /**
+   * @copydoc Model::CastShadow()
+   */
+  void CastShadow(bool castShadow);
+
+  /**
+   * @copydoc Model::IsShadowCasting()
+   */
+  bool IsShadowCasting() const;
+
+  /**
+   * @copydoc Model::ReceiveShadow()
+   */
+  void ReceiveShadow(bool receiveShadow);
+
+  /**
+   * @copydoc Model::IsShadowReceiving()
+   */
+  bool IsShadowReceiving() const;
+
+  /**
    * @copydoc Scene3D::Model::MeshHitSignal()
    */
   Scene3D::Model::MeshHitSignalType& MeshHitSignal()
@@ -295,6 +315,16 @@ private:
   void FitModelPosition();
 
   /**
+   * @brief Makes the input node cast shadow or not.
+   */
+  void UpdateCastShadowRecursively(Scene3D::ModelNode node, bool castShadow);
+
+  /**
+   * @brief Makes the input node receive shadow or not.
+   */
+  void UpdateReceiveShadowRecursively(Scene3D::ModelNode node, bool receiveShadow);
+
+  /**
    * @brief Changes IBL information of the input node.
    */
   void UpdateImageBasedLightTextureRecursively(Scene3D::ModelNode node, Dali::Texture diffuseTexture, Dali::Texture specularTexture, float iblScaleFactor, uint32_t specularMipmapLevels);
@@ -444,6 +474,8 @@ private:
   bool          mIblSpecularResourceReady;
   bool          mIblDiffuseDirty;
   bool          mIblSpecularDirty;
+  bool          mIsShadowCasting;
+  bool          mIsShadowReceiving;
 };
 
 } // namespace Internal