Advertisement
Guest User

Untitled

a guest
Apr 19th, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. using UnityEngine;
  2. using UnityEngine.EventSystems;
  3. using UnityEngine.UI;
  4.  
  5. public class NestedScrollRect : ScrollRect
  6. {
  7. public override void OnInitializePotentialDrag(PointerEventData eventData)
  8. {
  9. m_parentScrollRect?.OnInitializePotentialDrag(eventData);
  10. base.OnInitializePotentialDrag(eventData);
  11. }
  12.  
  13. public override void OnBeginDrag(PointerEventData eventData)
  14. {
  15. m_routeToParent = (!horizontal && Mathf.Abs(eventData.delta.x) > Mathf.Abs(eventData.delta.y)) || (!vertical && Mathf.Abs(eventData.delta.x) < Mathf.Abs(eventData.delta.y));
  16.  
  17. if (m_routeToParent)
  18. {
  19. m_parentScrollRect?.OnBeginDrag(eventData);
  20. }
  21. else
  22. {
  23. base.OnBeginDrag(eventData);
  24. }
  25. }
  26.  
  27. public override void OnDrag(PointerEventData eventData)
  28. {
  29. if(m_routeToParent)
  30. {
  31. m_parentScrollRect?.OnDrag(eventData);
  32. }
  33. else
  34. {
  35. base.OnDrag(eventData);
  36. }
  37. }
  38.  
  39. public override void OnEndDrag(PointerEventData eventData)
  40. {
  41. if (m_routeToParent)
  42. {
  43. m_parentScrollRect?.OnEndDrag(eventData);
  44. }
  45. else
  46. {
  47. base.OnEndDrag(eventData);
  48. }
  49.  
  50. m_routeToParent = false;
  51. }
  52.  
  53. [SerializeField] private ScrollRect m_parentScrollRect = null;
  54.  
  55. private bool m_routeToParent = false;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement