if(renderTask.IsHittable(screenCoordinates))
{
Viewport viewport;
- renderTask.GetHittableViewport(viewport);
-
+ renderTask.GetViewport(viewport);
if(screenCoordinates.x < static_cast<float>(viewport.x) ||
screenCoordinates.x > static_cast<float>(viewport.x + viewport.width) ||
screenCoordinates.y < static_cast<float>(viewport.y) ||
float localX, localY;
inside = inputMappingActor->ScreenToLocal(defaultCamera->GetViewMatrix(), defaultCamera->GetProjectionMatrix(), viewport, localX, localY, screenCoords.x, screenCoords.y);
- Vector3 actorSize = inputMappingActor->GetCurrentSize() * inputMappingActor->GetCurrentWorldScale();
+ Vector3 actorSize = inputMappingActor->GetCurrentSize();
if(inside && localX >= 0.f && localX <= actorSize.x && localY >= 0.f && localY <= actorSize.y)
{
screenCoords.x = localX;
return inside;
}
-void RenderTask::GetHittableViewport(Viewport& viewPort) const
-{
- if(GetRenderTaskSceneObject())
- {
- if(GetInputEnabled())
- {
- if(mFrameBuffer)
- {
- auto mappingActor = GetScreenToFrameBufferMappingActor();
- if(mappingActor)
- {
- Actor& inputMappingActor = GetImplementation(mappingActor);
-
- Vector3 actorSize = inputMappingActor.GetCurrentSize() * inputMappingActor.GetCurrentWorldScale();
-
- viewPort.x = viewPort.y = 0;
- viewPort.width = static_cast<int32_t>(actorSize.x + 0.5f); // rounded
- viewPort.height = static_cast<int32_t>(actorSize.y + 0.5f); // rounded
- }
- }
- else
- {
- GetViewport(viewPort);
- }
- }
- }
-}
-
bool RenderTask::WorldToViewport(const Vector3& position, float& viewportX, float& viewportY) const
{
CameraActor* cam = GetCameraActor();
bool TranslateCoordinates(Vector2& screenCoords) const;
/**
- * @brief Get Viewport when we need to be used with translated screen coordinated when render task is offscreen.
- * It will be used when we hit-test.
- * @param[out] viewPort instance to copy the values into
- */
- void GetHittableViewport(Viewport& viewPort) const;
-
- /**
* @copydoc Dali::RenderTask::WorldToViewport()
*/
bool WorldToViewport(const Vector3& position, float& viewportX, float& viewportY) const;
~RenderTask() override;
private: // not copyable
- RenderTask() = delete;
- RenderTask(const RenderTask&) = delete;
+ RenderTask() = delete;
+ RenderTask(const RenderTask&) = delete;
RenderTask& operator=(const RenderTask&) = delete;
private:
WeakHandle<Dali::Actor> mInputMappingActor; /// used to mapping screen to frame buffer coordinate, not kept alive by rendertask
RenderTaskList& mRenderTaskList; ///< The render task list
- Vector4 mClearColor; ///< Optional clear color
+ Vector4 mClearColor; ///< Optional clear color
- Vector2 mViewportPosition; ///< The cached viewport position
- Vector2 mViewportSize; ///< The cached viewport size
+ Vector2 mViewportPosition; ///< The cached viewport position
+ Vector2 mViewportSize; ///< The cached viewport size
- uint32_t mRefreshRate; ///< Determines how often the task is processed.
+ uint32_t mRefreshRate; ///< Determines how often the task is processed.
uint32_t mRefreshOnceCounter;