Add SceneView
[platform/core/uifw/dali-toolkit.git] / dali-scene3d / internal / controls / model-view / model-view-impl.h
index 14b31f9..e17dde3 100644 (file)
 #include <dali/public-api/actors/layer.h>
 #include <dali/public-api/animation/animation.h>
 #include <dali/public-api/rendering/texture.h>
 #include <dali/public-api/actors/layer.h>
 #include <dali/public-api/animation/animation.h>
 #include <dali/public-api/rendering/texture.h>
+#include <dali/public-api/object/weak-handle.h>
 
 // INTERNAL INCLUDES
 #include <dali-scene3d/public-api/controls/model-view/model-view.h>
 
 // INTERNAL INCLUDES
 #include <dali-scene3d/public-api/controls/model-view/model-view.h>
+#include <dali-scene3d/public-api/controls/scene-view/scene-view.h>
 
 namespace Dali
 {
 
 namespace Dali
 {
@@ -71,6 +73,11 @@ public:
   void SetImageBasedLightSource(const std::string& diffuse, const std::string& specular, float scaleFactor);
 
   /**
   void SetImageBasedLightSource(const std::string& diffuse, const std::string& specular, float scaleFactor);
 
   /**
+   * @copydoc ModelView::SetImageBasedLightTexture()
+   */
+  void SetImageBasedLightTexture(Dali::Texture diffuse, Dali::Texture specular, float scaleFactor);
+
+  /**
    * @copydoc ModelView::GetAnimationCount()
    */
   uint32_t GetAnimationCount();
    * @copydoc ModelView::GetAnimationCount()
    */
   uint32_t GetAnimationCount();
@@ -103,6 +110,11 @@ private:
   void OnSceneConnection(int depth) override;
 
   /**
   void OnSceneConnection(int depth) override;
 
   /**
+   * @copydoc CustomActorImpl::OnSceneDisconnection()
+   */
+  void OnSceneDisconnection() override;
+
+  /**
    * @copydoc Toolkit::Control::OnInitialize()
    */
   void OnInitialize() override;
    * @copydoc Toolkit::Control::OnInitialize()
    */
   void OnInitialize() override;
@@ -145,14 +157,21 @@ private:
   /**
    * @brief Changes IBL information of the input node.
    */
   /**
    * @brief Changes IBL information of the input node.
    */
-  void SetImageBasedLight(Actor node);
+  void CollectRenderableActor(Actor actor);
+
+  /**
+   * @brief Changes IBL information of the input node.
+   */
+  void UpdateImageBasedLight();
 
 private:
 
 private:
-  std::string                mModelPath;
-  std::string                mResourcePath;
-  Dali::Layer                mModelLayer;
-  Dali::Actor                mModelRoot;
-  std::vector<AnimationData> mAnimations;
+  std::string                    mModelPath;
+  std::string                    mResourcePath;
+  Dali::Layer                    mModelLayer;
+  Dali::Actor                    mModelRoot;
+  std::vector<AnimationData>     mAnimations;
+  std::vector<WeakHandle<Actor>> mRenderableActors;
+  WeakHandle<Scene3D::SceneView> mParentSceneView;
 
   Dali::Texture mSpecularTexture;
   Dali::Texture mDiffuseTexture;
 
   Dali::Texture mSpecularTexture;
   Dali::Texture mDiffuseTexture;