From: huiyu.eun Date: Wed, 3 Apr 2024 06:08:22 +0000 (+0900) Subject: Fix hit-test RenderTask error X-Git-Tag: dali_2.3.18~1 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=e56b438eb067a63ff863da600c7c6b75ab370c1b Fix hit-test RenderTask error There is a problem that the hit-test does not work properly because the RenderTask is always fetched with a fixed index from the RenderTaskList. It is fixed by passing the corresponding SceneView's RenderTask. Change-Id: Id114c839455613fc4ed6437e2cb8482ee6677be9 Signed-off-by: huiyu.eun --- diff --git a/dali-scene3d/internal/controls/scene-view/scene-view-impl.cpp b/dali-scene3d/internal/controls/scene-view/scene-view-impl.cpp index 38e5611..8c9b9b3 100644 --- a/dali-scene3d/internal/controls/scene-view/scene-view-impl.cpp +++ b/dali-scene3d/internal/controls/scene-view/scene-view-impl.cpp @@ -904,6 +904,11 @@ bool SceneView::IsEnabledCropToMask() return mCropToMask; } +Dali::RenderTask SceneView::GetRenderTask() +{ + return mRenderTask; +} + void SceneView::SetProperty(BaseObject* object, Property::Index index, const Property::Value& value) { Scene3D::SceneView sceneView = Scene3D::SceneView::DownCast(Dali::BaseHandle(object)); diff --git a/dali-scene3d/internal/controls/scene-view/scene-view-impl.h b/dali-scene3d/internal/controls/scene-view/scene-view-impl.h index 1ddfd27..3d8c639 100644 --- a/dali-scene3d/internal/controls/scene-view/scene-view-impl.h +++ b/dali-scene3d/internal/controls/scene-view/scene-view-impl.h @@ -288,6 +288,11 @@ public: */ bool IsEnabledCropToMask(); + /** + * @brief Gets current RenderTask + */ + Dali::RenderTask GetRenderTask(); + // Properties /** diff --git a/dali-scene3d/internal/event/collider-mesh-processor-impl.cpp b/dali-scene3d/internal/event/collider-mesh-processor-impl.cpp index c205433..2ec0fed 100644 --- a/dali-scene3d/internal/event/collider-mesh-processor-impl.cpp +++ b/dali-scene3d/internal/event/collider-mesh-processor-impl.cpp @@ -94,11 +94,9 @@ public: Vector3 direction; cameraActor.ScreenToLocal(x, y, result.x, result.y); - auto list = Stage::GetCurrent().GetRenderTaskList(); - [[maybe_unused]] auto taskCount = list.GetTaskCount(); - renderTask = list.GetTask(list.GetTaskCount() - 1); + auto sceneViewRenderTask = GetImpl(sceneView).GetRenderTask(); - if(HitTestAlgorithm::BuildPickingRay(renderTask, result, origin, direction)) + if(sceneViewRenderTask && HitTestAlgorithm::BuildPickingRay(sceneViewRenderTask, result, origin, direction)) { for(auto& mesh : meshData) {