< Summary

Class:MainScripts.DCL.Controllers.HUD.CharacterPreview.PreviewCameraRotation
Assembly:CharacterPreviewController
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/CharacterPreview/PreviewCameraRotation.cs
Covered lines:2
Uncovered lines:20
Coverable lines:22
Total lines:64
Line coverage:9% (2 of 22)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
PreviewCameraRotation()0%110100%
OnBeginDrag(...)0%2100%
OnDrag(...)0%12300%
OnEndDrag(...)0%6200%
SlowDown()0%30500%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/CharacterPreview/PreviewCameraRotation.cs

#LineLine coverage
 1using System.Collections;
 2using UnityEngine;
 3using UnityEngine.EventSystems;
 4
 5namespace MainScripts.DCL.Controllers.HUD.CharacterPreview
 6{
 7    public class PreviewCameraRotation : MonoBehaviour, IDragHandler, IBeginDragHandler, IEndDragHandler
 8    {
 9        public event System.Action<float> OnHorizontalRotation;
 10
 5011        public float rotationFactor = -15f;
 12
 5013        public float slowDownTime = 0.5f;
 14
 15        private float currentHorizontalRotationVelocity = 0f;
 16
 17        private float slowDownVelocity;
 18
 19        private Coroutine slowDownCoroutine;
 20
 21        private float timer;
 22
 023        public void OnBeginDrag(PointerEventData eventData) { AudioScriptableObjects.buttonClick.Play(true); }
 24
 25        public void OnDrag(PointerEventData eventData)
 26        {
 027            if (slowDownCoroutine != null)
 28            {
 029                StopCoroutine(slowDownCoroutine);
 030                slowDownCoroutine = null;
 31            }
 32
 033            currentHorizontalRotationVelocity = rotationFactor * eventData.delta.x;
 034            OnHorizontalRotation?.Invoke(currentHorizontalRotationVelocity);
 035        }
 36
 37        public void OnEndDrag(PointerEventData eventData)
 38        {
 039            timer = slowDownTime;
 040            slowDownVelocity = currentHorizontalRotationVelocity;
 41
 042            if (slowDownCoroutine == null)
 43            {
 044                slowDownCoroutine = StartCoroutine(SlowDown());
 45            }
 46
 047            AudioScriptableObjects.buttonRelease.Play(true);
 048        }
 49
 50        private IEnumerator SlowDown()
 51        {
 052            float inverseTimer = 1f / slowDownTime;
 53
 054            while (timer > 0)
 55            {
 056                timer -= Time.deltaTime;
 057                currentHorizontalRotationVelocity  = Mathf.Lerp(slowDownVelocity, 0, 1 - (timer * inverseTimer));
 058                OnHorizontalRotation?.Invoke(currentHorizontalRotationVelocity);
 59
 060                yield return null;
 61            }
 062        }
 63    }
 64}