[dali_2.3.24] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-scene3d / internal / controls / model / model-impl.h
index ff9ba0c..d82fa8f 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_SCENE3D_INTERNAL_MODEL_H
 
 /*
- * Copyright (c) 2023 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -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()
@@ -210,9 +230,8 @@ public:
    * @brief Registers child node with collidier mesh
    *
    * @param[in] node ModelNode to register
-   * @param[in] mesh Collider mesh to associate with model node
    */
-  void RegisterColliderMesh(Scene3D::ModelNode& node, const Dali::Scene3D::Algorithm::ColliderMesh& mesh);
+  void RegisterColliderMesh(Scene3D::ModelNode& node);
 
   /**
    * @brief Removes node/collider mesh from the register
@@ -296,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);
@@ -372,11 +401,6 @@ private:
   void ResetResourceTasks();
 
   /**
-   * @brief Reset a Resource loading task.
-   */
-  void ResetResourceTask(IntrusivePtr<AsyncTask> asyncTask);
-
-  /**
    * @brief Notify Resource Ready signal.
    */
   void NotifyResourceReady();
@@ -450,6 +474,8 @@ private:
   bool          mIblSpecularResourceReady;
   bool          mIblDiffuseDirty;
   bool          mIblSpecularDirty;
+  bool          mIsShadowCasting;
+  bool          mIsShadowReceiving;
 };
 
 } // namespace Internal