Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MRTK3: Scrolling Views do not work with user input. #10736

Closed
SimonDarksideJ opened this issue Jul 12, 2022 · 10 comments
Closed

MRTK3: Scrolling Views do not work with user input. #10736

SimonDarksideJ opened this issue Jul 12, 2022 · 10 comments
Assignees
Labels
Feature Branch Issue found in, or PR destined for a feature branch. Feature Request Feature request from the community IssueMigrated MRTK3 UX Controls - Scroll View
Milestone

Comments

@SimonDarksideJ
Copy link
Contributor

SimonDarksideJ commented Jul 12, 2022

This issue has been migrated a new MRTK repository, and the status of this issue will now be tracked at the following location:


Describe the bug

A clear and concise description of what the bug is.
Tested all of the available MS examples on using a Scrolling View with the MRTK3, yet none actually function with user input.

Valiated:

  • Hero Panel in CanvasExamples
  • VirtualizedScrollRectList - turning off the script that automatically moves the view
  • Setting up a new ScrollRect with MRTK3 buttons

All the input seems to be captured by the content and none of the scroll behaviour makes it's way up to the scrollrect. Even using a Scrollbar does nothing.

To reproduce

Steps to reproduce the behavior:

  1. Open MRTK3 VirtualizedScrollRectList
  2. Disable the Virtualized Scroll Rect List Tester component on the Scroll View (to allow for manual input)
  3. TRY to scroll using far pointers or near hand interactions
  4. See error

Expected behavior

ScrollRects should be interactable with using input via near hands or far pointers, to scroll the view.

Your setup (please complete the following information)

  • Unity Version [e.g. 2020.3.36f1]
  • MRTK Version [e.g. v3.0] - latest

Target platform (please complete the following information)

  • HoloLens 2
@SimonDarksideJ
Copy link
Contributor Author

SimonDarksideJ commented Jul 12, 2022

A bit of an update, after some tweaking of the controls I returned to testing and found it was possible to scroll in the view (quite a relief that it is even possible), however this still leaves it practically unusable.
I suspect if you manage to grab an item by its shadow or something a few pixels wide of the buttons collider, you can get an interaction back to the panel behind it and actually scroll.

Ideally though, if a Selectable is Grabbed and the use attempts to drag, then this input should be fed through to the parent scrolling area (if there is one), so that scrolling is possible wherever you drag in a Scrollable area.

@jessemcculloch
Copy link

I have a video from Simon if anyone on the MRTK team needs to see it. Just let me know over Teams if so.

@Zee2
Copy link
Contributor

Zee2 commented Jul 13, 2022

@SimonDarksideJ, Scrolling is not yet implemented for this preview release. I've been working on it for the past few weeks, stay tuned!

There's a reason this is still in preview 😉

@Zee2 Zee2 added Feature Branch Issue found in, or PR destined for a feature branch. Feature Request Feature request from the community and removed Bug labels Jul 13, 2022
@Zee2 Zee2 added this to the MRTK3 milestone Jul 13, 2022
@Zee2
Copy link
Contributor

Zee2 commented Aug 9, 2022

Tracking this work in #10795 !

@Zee2
Copy link
Contributor

Zee2 commented Aug 9, 2022

Closing as duplicated from the PR. I'll be posting additional updates over on the PR page.

@Zee2 Zee2 closed this as completed Aug 9, 2022
@Zee2 Zee2 reopened this Aug 9, 2022
@Zee2 Zee2 closed this as not planned Won't fix, can't repro, duplicate, stale Aug 9, 2022
@keveleigh keveleigh reopened this Oct 10, 2022
@keveleigh keveleigh linked a pull request Oct 10, 2022 that will close this issue
3 tasks
@AMollis AMollis removed the MRTK3 GA label Feb 24, 2023
@AMollis AMollis assigned srinjoym and unassigned Zee2 Mar 2, 2023
@AMollis AMollis added the Release Blocker Things we must address before the next release. label Mar 2, 2023
@AMollis
Copy link
Member

AMollis commented Mar 2, 2023

@srinjoym can you look into Finn's PR and see what it'll take to bring this into GA

@AMollis AMollis removed the Release Blocker Things we must address before the next release. label Mar 17, 2023
@srinjoym
Copy link
Contributor

srinjoym commented Apr 5, 2023

Tested out Finn's draft PR today. The implementation adds a Scrollable script to allow interactors to move ScrollRect's. The Scrollable script inherits from PressableButton and as far as I can tell makes the whole scroll area a button. The Scrollable script listens for touch events on the button and calculates the scroll delta frame to frame. This works pretty well for scrolling with both poke and far interactors.

There are a couple of issues right now:

  1. Far interactors are not able to click buttons inside the ScrollRect. Not sure if there's a way to circumvent this, likely due to the nested buttons interfering with each other.
  2. Trying to poke scroll a list causes the inner buttons to get clicked. We should try to disable the inner button click events if we detect an active scroll.

@srinjoym
Copy link
Contributor

MRTK 2 had both poke scrolling and bubble up ray scrolling. The implementation wasn't ideal either as the inner buttons still got clicked when trying to scroll

@srinjoym
Copy link
Contributor

Based on the investigation above, I'd say we need about 2 weeks to either fix this implementation or prototype new scroll interactions. I'm moving this task back to planned

@AMollis AMollis assigned shaynie and unassigned srinjoym Apr 17, 2023
@AMollis AMollis assigned AMollis and unassigned marlenaklein-msft May 23, 2023
AMollis added a commit that referenced this issue Jun 26, 2023
## Overview
This adds an experimental method of scrolling through a Unity `ScrollRect` using XRI interactors.  The sample scene demonstrates how to scroll through a canvas `SrollRect` using both the poke and hand ray interactors.

![An animated image demonstrating scrolling with Unity XRI interactors](https://github.com/microsoft/MixedRealityToolkit-Unity/assets/36461279/ce1c487a-502e-477a-96e0-bda910bfc20f)

To accomplish this, the new experimental component `InteractableEventRouter` was added. The `InteractableEventRouter` component routes child XRI events to other child and parent game objects that contain the `IXRInteractableEventRouteTarget` component.

The following image shows a sample usage of this component.  In this usage, the `InteractableEventRouter` is configured to bubble up select and hover events from child games objects.

![Shows a sample usage of this component.  In this usage, the `InteractableEventRouter` is configured to bubble up select and hover events from child games objects](https://github.com/microsoft/MixedRealityToolkit-Unity/assets/36461279/7119b208-b79c-44bc-851d-9f2374a95e1c)

## Fixes
- #10736

## Known Limitations
The `InteractbleEventRouter` currently can't handle `IXRInteractableEventRouteTargets` being dynamically added. So, this may limit some use cases, such as wanting to trickle down events to children added dynamically.  

## Verification
- Unit Tests in progress
@AMollis
Copy link
Member

AMollis commented Jun 27, 2023

An experimental feature has been added for this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feature Branch Issue found in, or PR destined for a feature branch. Feature Request Feature request from the community IssueMigrated MRTK3 UX Controls - Scroll View
Projects
None yet
Development

Successfully merging a pull request may close this issue.