< Summary

Class:BuilderInWorldInputWrapper
Assembly:BuilderInWorld
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/BuilderMode/BuilderInWorldInputWrapper.cs
Covered lines:3
Uncovered lines:54
Coverable lines:57
Total lines:124
Line coverage:5.2% (3 of 57)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
BuilderInWorldInputWrapper()0%110100%
Awake()0%2100%
OnDestroy()0%2100%
StopInput()0%2100%
ResumeInput()0%2100%
MouseUp(...)0%1101000%
MouseDown(...)0%20400%
MouseWheel(...)0%20400%
MouseDrag(...)0%12300%
MouseRawDrag(...)0%12300%
CanDrag()0%20400%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/BuilderMode/BuilderInWorldInputWrapper.cs

#LineLine coverage
 1using Builder;
 2using System;
 3using System.Collections;
 4using System.Collections.Generic;
 5using UnityEngine;
 6using UnityEngine.EventSystems;
 7
 8public class BuilderInWorldInputWrapper : MonoBehaviour
 9{
 19810    public float msClickThreshold = 200;
 19811    public float movementClickThreshold = 50;
 12
 13    public static event Action<int, Vector3> OnMouseClick;
 14    public static event Action<int, Vector3> OnMouseClickOnUI;
 15    public static event Action<int, Vector3> OnMouseDown;
 16    public static event Action<int, Vector3> OnMouseUp;
 17    public static event Action<int, Vector3> OnMouseUpOnUI;
 18
 19    public static event Action<float> OnMouseWheel;
 20
 21    public static event OnMouseDragDelegate OnMouseDrag;
 22    public static event OnMouseDragDelegateRaw OnMouseDragRaw;
 23
 24    public delegate void OnMouseDragDelegate(int buttonId, Vector3 position, float axisX, float axisY);
 25    public delegate void OnMouseDragDelegateRaw(int buttonId, Vector3 position, float axisX, float axisY);
 26
 27    private float lastTimeMouseDown = 0;
 28    private Vector3 lastMousePosition;
 19829    private bool canInputBeMade = true;
 30    private bool currentClickIsOnUi = false;
 31
 32    private void Awake()
 33    {
 034        DCLBuilderInput.OnMouseDrag += MouseDrag;
 035        DCLBuilderInput.OnMouseRawDrag += MouseRawDrag;
 036        DCLBuilderInput.OnMouseWheel += MouseWheel;
 037        DCLBuilderInput.OnMouseDown += MouseDown;
 038        DCLBuilderInput.OnMouseUp += MouseUp;
 039    }
 40
 41    private void OnDestroy()
 42    {
 043        DCLBuilderInput.OnMouseDrag -= MouseDrag;
 044        DCLBuilderInput.OnMouseRawDrag -= MouseRawDrag;
 045        DCLBuilderInput.OnMouseWheel -= MouseWheel;
 046        DCLBuilderInput.OnMouseDown -= MouseDown;
 047        DCLBuilderInput.OnMouseUp -= MouseUp;
 048    }
 49
 050    public void StopInput() { canInputBeMade = false; }
 51
 052    public void ResumeInput() { canInputBeMade = true; }
 53
 54    private void MouseUp(int buttonId, Vector3 mousePosition)
 55    {
 056        if (currentClickIsOnUi)
 57        {
 058            OnMouseClickOnUI?.Invoke(buttonId, mousePosition);
 059            currentClickIsOnUi = false;
 060            return;
 61        }
 62
 063        if (!canInputBeMade)
 064            return;
 65
 066        if (!BuilderInWorldUtils.IsPointerOverUIElement())
 67        {
 068            OnMouseUp?.Invoke(buttonId, mousePosition);
 069            if (Vector3.Distance(mousePosition, lastMousePosition) >= movementClickThreshold)
 070                return;
 071            if (Time.unscaledTime >= lastTimeMouseDown + msClickThreshold / 1000)
 072                return;
 073            OnMouseClick?.Invoke(buttonId, mousePosition);
 074        }
 75        else
 076            OnMouseUpOnUI?.Invoke(buttonId, mousePosition);
 077    }
 78
 79    private void MouseDown(int buttonId, Vector3 mousePosition)
 80    {
 081        lastTimeMouseDown = Time.unscaledTime;
 082        lastMousePosition = mousePosition;
 083        currentClickIsOnUi = BuilderInWorldUtils.IsPointerOverUIElement();
 84
 085        if (!canInputBeMade)
 086            return;
 087        if (!currentClickIsOnUi)
 088            OnMouseDown?.Invoke(buttonId, mousePosition);
 089    }
 90
 91    private void MouseWheel(float axisValue)
 92    {
 093        if (!canInputBeMade)
 094            return;
 095        if (!BuilderInWorldUtils.IsPointerOverUIElement())
 096            OnMouseWheel?.Invoke(axisValue);
 097    }
 98
 99    private void MouseDrag(int buttonId, Vector3 mousePosition, float axisX, float axisY)
 100    {
 0101        if (!CanDrag())
 0102            return;
 103
 0104        OnMouseDrag?.Invoke(buttonId, mousePosition, axisX, axisY);
 0105    }
 106
 107    private void MouseRawDrag(int buttonId, Vector3 mousePosition, float axisX, float axisY)
 108    {
 0109        if (!CanDrag())
 0110            return;
 111
 0112        OnMouseDragRaw?.Invoke(buttonId, mousePosition, axisX, axisY);
 0113    }
 114
 115    private bool CanDrag()
 116    {
 0117        if (!canInputBeMade ||
 118            currentClickIsOnUi ||
 119            BuilderInWorldUtils.IsPointerOverUIElement())
 0120            return false;
 121
 0122        return true;
 123    }
 124}