< Summary

Class:DragUIHandler
Assembly:FPSDisplay
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/WorldRuntime/Debugging/FPSDisplay/DragUIHandler.cs
Covered lines:1
Uncovered lines:27
Coverable lines:28
Total lines:71
Line coverage:3.5% (1 of 28)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
DragUIHandler()0%110100%
Start()0%6200%
OnBeginDrag(...)0%2100%
OnDrag(...)0%12300%
OnEndDrag(...)0%2100%
SetPivot(...)0%6200%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/WorldRuntime/Debugging/FPSDisplay/DragUIHandler.cs

#LineLine coverage
 1using UnityEngine;
 2using UnityEngine.EventSystems;
 3using UnityEngine.UI;
 4
 5public class DragUIHandler : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler {
 6
 7    private Vector2 pointerOffset;
 8    private RectTransform canvasRectTransform;
 9    private RectTransform panelRectTransform;
 10    private Vector3 startLocalScale;
 11    private Vector2 originalPivot;
 212    [SerializeField] private float scaleDownOnBeginDrag = 1f;
 13    private bool jumpOneFrame;
 14
 15    public void Start(){
 16
 017        Canvas canvas = GetComponentInParent<Canvas> ();
 018        if(canvas != null){
 019            canvasRectTransform = canvas.transform as RectTransform;
 020            panelRectTransform = transform as RectTransform;
 21        }
 022        startLocalScale = panelRectTransform.localScale;
 023        originalPivot = panelRectTransform.pivot;
 024    }
 25
 26    #region IBeginDragHandler implementation
 27
 28    public void OnBeginDrag (PointerEventData eventData)
 29    {
 030        RectTransformUtility.ScreenPointToLocalPointInRectangle (panelRectTransform, eventData.position, eventData.press
 031        SetPivot(panelRectTransform, Rect.PointToNormalized(panelRectTransform.rect, localPointerForNewPivot));
 032        panelRectTransform.localScale = startLocalScale * scaleDownOnBeginDrag;
 033        RectTransformUtility.ScreenPointToLocalPointInRectangle (panelRectTransform, eventData.position, eventData.press
 034    }
 35
 36    #endregion
 37
 38    #region IDragHandler implementation
 39
 40    public void OnDrag (PointerEventData eventData)
 41    {
 042        if(panelRectTransform == null){
 043            return;
 44        }
 045        if(RectTransformUtility.ScreenPointToLocalPointInRectangle (canvasRectTransform, eventData.position, eventData.p
 046            panelRectTransform.localPosition = localPointerPosition - pointerOffset;
 47        }
 048    }
 49
 50    #endregion
 51
 52    #region IEndDragHandler implementation
 53
 54    public void OnEndDrag (PointerEventData eventData)
 55    {
 056        panelRectTransform.localScale = startLocalScale;
 057        SetPivot(panelRectTransform, originalPivot);
 058    }
 59
 60    #endregion
 61
 62    private void SetPivot(RectTransform target, Vector2 pivot)
 63    {
 064        if (!target) return;
 065        var offset= pivot - target.pivot;
 066        offset.Scale(target.rect.size);
 067        var wordlPos= target.position + target.TransformVector(offset);
 068        target.pivot = pivot;
 069        target.position = wordlPos;
 070    }
 71}