From e56b438eb067a63ff863da600c7c6b75ab370c1b Mon Sep 17 00:00:00 2001 From: "huiyu.eun" Date: Wed, 3 Apr 2024 15:08:22 +0900 Subject: [PATCH] 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 --- dali-scene3d/internal/controls/scene-view/scene-view-impl.cpp | 5 +++++ dali-scene3d/internal/controls/scene-view/scene-view-impl.h | 5 +++++ dali-scene3d/internal/event/collider-mesh-processor-impl.cpp | 6 ++---- 3 files changed, 12 insertions(+), 4 deletions(-) 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) { -- 2.7.4