< Summary

Class:BIWInputHandler
Assembly:BuilderInWorld
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/BuilderMode/Controllers/BIWInputHandler.cs
Covered lines:4
Uncovered lines:82
Coverable lines:86
Total lines:197
Line coverage:4.6% (4 of 86)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
BIWInputHandler()0%110100%
Start()0%2100%
OnDestroy()0%6200%
Init()0%2.262060%
FrameUpdate()0%20400%
EnterEditMode(...)0%2100%
ExitEditMode()0%2100%
CheckEditModeInput()0%6200%
StartMultiSelection()0%2100%
EndMultiSelection()0%2100%
MouseClick(...)0%56700%
MouseClickOnUI(...)0%2100%
IsMultiSelectionActive()0%2100%
OnEditModeChangeAction(...)0%2100%
RedoAction()0%2100%
UndoAction()0%6200%
MouseClickDetected()0%2100%
InputDone()0%2100%
StopInput()0%2100%
ResumeInput()0%2100%

File(s)

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

#LineLine coverage
 1using DCL.Controllers;
 2using DCL.Helpers;
 3using System.Collections;
 4using System.Collections.Generic;
 5using UnityEngine;
 6using System;
 7
 8public class BIWInputHandler : BIWController
 9{
 10    [Header("Design variables")]
 19811    public float msBetweenInputInteraction = 200;
 12
 13    [Header("References")]
 14    public BuilderInWorldController builderInWorldController;
 15    public ActionController actionController;
 16    public BIWModeController biwModeController;
 17    public BuilderInWorldInputWrapper builderInputWrapper;
 18    public BIWOutlinerController outlinerController;
 19    public BuilderInWorldEntityHandler builderInWorldEntityHandler;
 20
 21    [Header("InputActions")]
 22    [SerializeField]
 23    internal InputAction_Trigger editModeChangeInputAction;
 24
 25    [SerializeField]
 26    internal InputAction_Trigger toggleRedoActionInputAction;
 27
 28    [SerializeField]
 29    internal InputAction_Trigger toggleUndoActionInputAction;
 30
 31    [SerializeField]
 32    internal InputAction_Hold multiSelectionInputAction;
 33
 34    private InputAction_Hold.Started multiSelectionStartDelegate;
 35    private InputAction_Hold.Finished multiSelectionFinishedDelegate;
 36
 37    private InputAction_Trigger.Triggered redoDelegate;
 38    private InputAction_Trigger.Triggered undoDelegate;
 39
 40    private bool isMultiSelectionActive = false;
 41
 42    private float nexTimeToReceiveInput;
 43
 44    void Start()
 45    {
 046        editModeChangeInputAction.OnTriggered += OnEditModeChangeAction;
 47
 048        redoDelegate = (action) => RedoAction();
 049        undoDelegate = (action) => UndoAction();
 50
 051        toggleRedoActionInputAction.OnTriggered += redoDelegate;
 052        toggleUndoActionInputAction.OnTriggered += undoDelegate;
 53
 054        multiSelectionStartDelegate = (action) => StartMultiSelection();
 055        multiSelectionFinishedDelegate = (action) => EndMultiSelection();
 56
 057        BuilderInWorldInputWrapper.OnMouseClick += MouseClick;
 058        BuilderInWorldInputWrapper.OnMouseClickOnUI += MouseClickOnUI;
 059        biwModeController.OnInputDone += InputDone;
 60
 061        multiSelectionInputAction.OnStarted += multiSelectionStartDelegate;
 062        multiSelectionInputAction.OnFinished += multiSelectionFinishedDelegate;
 063    }
 64
 65    private void OnDestroy()
 66    {
 067        editModeChangeInputAction.OnTriggered -= OnEditModeChangeAction;
 68
 069        toggleRedoActionInputAction.OnTriggered -= redoDelegate;
 070        toggleUndoActionInputAction.OnTriggered -= undoDelegate;
 71
 072        multiSelectionInputAction.OnStarted -= multiSelectionStartDelegate;
 073        multiSelectionInputAction.OnFinished -= multiSelectionFinishedDelegate;
 74
 075        BuilderInWorldInputWrapper.OnMouseClick -= MouseClick;
 076        BuilderInWorldInputWrapper.OnMouseClickOnUI -= MouseClickOnUI;
 077        biwModeController.OnInputDone -= InputDone;
 078        if (HUDController.i.builderInWorldMainHud != null)
 79        {
 080            HUDController.i.builderInWorldMainHud.OnStopInput -= StopInput;
 081            HUDController.i.builderInWorldMainHud.OnResumeInput -= ResumeInput;
 82        }
 083    }
 84
 85    public override void Init()
 86    {
 987        base.Init();
 988        if (HUDController.i.builderInWorldMainHud != null)
 89        {
 090            HUDController.i.builderInWorldMainHud.OnStopInput += StopInput;
 091            HUDController.i.builderInWorldMainHud.OnResumeInput += ResumeInput;
 92        }
 993    }
 94
 95    protected override void FrameUpdate()
 96    {
 097        base.FrameUpdate();
 98
 099        if (Time.timeSinceLevelLoad < nexTimeToReceiveInput)
 0100            return;
 101
 0102        if (Utils.isCursorLocked || biwModeController.IsGodModeActive())
 0103            CheckEditModeInput();
 0104        biwModeController.CheckInput();
 0105    }
 106
 107    public override void EnterEditMode(ParcelScene scene)
 108    {
 0109        base.EnterEditMode(scene);
 0110        builderInputWrapper.gameObject.SetActive(true);
 0111    }
 112
 113    public override void ExitEditMode()
 114    {
 0115        base.ExitEditMode();
 0116        builderInputWrapper.gameObject.SetActive(false);
 0117    }
 118
 119    private void CheckEditModeInput()
 120    {
 0121        outlinerController.CheckOutline();
 122
 0123        if (builderInWorldEntityHandler.IsAnyEntitySelected())
 124        {
 0125            biwModeController.CheckInputSelectedEntities();
 126        }
 0127    }
 128
 129    private void StartMultiSelection()
 130    {
 0131        isMultiSelectionActive = true;
 0132        builderInWorldEntityHandler.SetMultiSelectionActive(isMultiSelectionActive);
 0133        Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto);
 0134        biwModeController.StartMultiSelection();
 0135    }
 136
 137    private void EndMultiSelection()
 138    {
 0139        isMultiSelectionActive = false;
 0140        builderInWorldEntityHandler.SetMultiSelectionActive(isMultiSelectionActive);
 0141        biwModeController.EndMultiSelection();
 0142        outlinerController.CancelUnselectedOutlines();
 0143    }
 144
 145    private void MouseClick(int buttonID, Vector3 position)
 146    {
 0147        if (!isEditModeActive)
 0148            return;
 149
 0150        if (Time.timeSinceLevelLoad < nexTimeToReceiveInput)
 0151            return;
 152
 0153        if (!BuilderInWorldUtils.IsPointerOverUIElement())
 0154            HUDController.i.builderInWorldMainHud.HideExtraBtns();
 155
 0156        if (Utils.isCursorLocked || biwModeController.IsGodModeActive())
 157        {
 0158            if (buttonID == 0)
 159            {
 0160                MouseClickDetected();
 0161                InputDone();
 0162                return;
 163            }
 0164            outlinerController.CheckOutline();
 165        }
 0166    }
 167
 0168    private void MouseClickOnUI(int buttonID, Vector3 position) { HUDController.i.builderInWorldMainHud.HideExtraBtns();
 169
 0170    public bool IsMultiSelectionActive() => isMultiSelectionActive;
 171
 0172    private void OnEditModeChangeAction(DCLAction_Trigger action) { builderInWorldController.ChangeEditModeStatusByShort
 173
 174    private void RedoAction()
 175    {
 0176        actionController.TryToRedoAction();
 0177        InputDone();
 0178    }
 179
 180    private void UndoAction()
 181    {
 0182        InputDone();
 183
 0184        if (biwModeController.ShouldCancelUndoAction())
 0185            return;
 186
 0187        actionController.TryToUndoAction();
 0188    }
 189
 0190    private void MouseClickDetected() { biwModeController.MouseClickDetected(); }
 191
 0192    private void InputDone() { nexTimeToReceiveInput = Time.timeSinceLevelLoad + msBetweenInputInteraction / 1000; }
 193
 0194    private void StopInput() { builderInputWrapper.StopInput(); }
 195
 0196    private void ResumeInput() { builderInputWrapper.ResumeInput(); }
 197}