Add ViewportGuideActor to RenderTask
[platform/core/uifw/dali-core.git] / dali / internal / update / manager / render-task-processor.cpp
index 30d9257..4aaee3b 100644 (file)
@@ -222,6 +222,20 @@ bool ProcessTasks(BufferIndex                          updateBufferIndex,
 
   bool isFirstRenderTask = true;
   bool keepRendering     = false;
+
+  // Retrieve size of Scene and default camera position to update viewport of each RenderTask if the RenderTask uses ViewportGuideNode.
+  RenderTaskList::RenderTaskContainer::Iterator iter                  = taskContainer.Begin();
+  RenderTask&                                   defaultRenderTask     = **iter;
+  auto                                          defaultCamera         = defaultRenderTask.GetCamera().GetNode();
+  auto                                          defaultRootNode       = defaultRenderTask.GetSourceNode();
+  Vector3                                       defaultCameraPosition = Vector3::ZERO;
+  Vector2                                       sceneSize             = Vector2::ZERO;
+  if(defaultCamera && defaultRootNode)
+  {
+    defaultCameraPosition = defaultCamera->GetWorldPosition(updateBufferIndex);
+    sceneSize             = Vector2(defaultRootNode->GetSize(updateBufferIndex) * defaultRootNode->GetWorldScale(updateBufferIndex));
+  }
+
   for(RenderTaskList::RenderTaskContainer::Iterator iter = taskContainer.Begin(), endIter = taskContainer.End(); endIter != iter; ++iter)
   {
     RenderTask& renderTask = **iter;
@@ -257,6 +271,8 @@ bool ProcessTasks(BufferIndex                          updateBufferIndex,
       continue;
     }
 
+    renderTask.UpdateViewport(updateBufferIndex, sceneSize, defaultCameraPosition);
+
     const uint32_t currentNumberOfInstructions = instructions.Count(updateBufferIndex);
 
     if(renderTask.IsRenderRequired())