< Summary

Class:DCL.InputController_Legacy
Assembly:DCL.Components.Events
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/UUIDEventComponentsPlugin/UUIDComponent/InputController_Legacy.cs
Covered lines:56
Uncovered lines:7
Coverable lines:63
Total lines:219
Line coverage:88.8% (56 of 63)
Covered branches:0
Total branches:0
Covered methods:8
Total methods:8
Method coverage:100% (8 of 8)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
InputController_Legacy()0%110100%
AddListener(...)0%330100%
RemoveListener(...)0%440100%
RaiseEvent(...)0%3.013088.89%
Update()0%11.310076.47%
IsPressed(...)0%10.147060%
Dispose()0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/UUIDEventComponentsPlugin/UUIDComponent/InputController_Legacy.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using DCL.Configuration;
 4using DCL.Interface;
 5using UnityEngine;
 6
 7namespace DCL
 8{
 9    public class InputController_Legacy : IDisposable
 10    {
 11        public delegate void ButtonListenerCallback(WebInterface.ACTION_BUTTON buttonId, EVENT eventType,
 12            bool useRaycast, bool enablePointerEvent);
 13
 784914        private static bool renderingEnabled => CommonScriptableObjects.rendererState.Get();
 15
 16        public enum EVENT
 17        {
 18            BUTTON_DOWN,
 19            BUTTON_UP
 20        }
 21
 22        private enum BUTTON_TYPE
 23        {
 24            MOUSE,
 25            KEYBOARD
 26        }
 27
 28        private struct BUTTON_MAP
 29        {
 30            public BUTTON_TYPE type;
 31            public int buttonNum;
 32            public WebInterface.ACTION_BUTTON buttonId;
 33            public bool useRaycast;
 34            public bool enablePointerEvent;
 35        }
 36
 8537        private readonly Dictionary<WebInterface.ACTION_BUTTON, List<ButtonListenerCallback>> listeners = new ();
 8538        private readonly List<BUTTON_MAP> buttonsMap = new ();
 39
 8540        public InputController_Legacy()
 41        {
 8542            buttonsMap.Add(new BUTTON_MAP()
 43            {
 44                type = BUTTON_TYPE.MOUSE, buttonNum = 0, buttonId = WebInterface.ACTION_BUTTON.POINTER,
 45                useRaycast = true, enablePointerEvent = true
 46            });
 8547            buttonsMap.Add(new BUTTON_MAP()
 48            {
 49                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.PrimaryButtonKeyCode,
 50                buttonId = WebInterface.ACTION_BUTTON.PRIMARY, useRaycast = true, enablePointerEvent = true
 51            });
 8552            buttonsMap.Add(new BUTTON_MAP()
 53            {
 54                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.SecondaryButtonKeyCode,
 55                buttonId = WebInterface.ACTION_BUTTON.SECONDARY, useRaycast = true, enablePointerEvent = true
 56            });
 57
 8558            buttonsMap.Add(new BUTTON_MAP()
 59            {
 60                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.ForwardButtonKeyCode,
 61                buttonId = WebInterface.ACTION_BUTTON.FORWARD, useRaycast = false, enablePointerEvent = false
 62            });
 8563            buttonsMap.Add(new BUTTON_MAP()
 64            {
 65                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.ForwardButtonKeyCodeAlt,
 66                buttonId = WebInterface.ACTION_BUTTON.FORWARD, useRaycast = false, enablePointerEvent = false
 67            });
 68
 8569            buttonsMap.Add(new BUTTON_MAP()
 70            {
 71                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.BackwardButtonKeyCode,
 72                buttonId = WebInterface.ACTION_BUTTON.BACKWARD, useRaycast = false, enablePointerEvent = false
 73            });
 8574            buttonsMap.Add(new BUTTON_MAP()
 75            {
 76                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.BackwardButtonKeyCodeAlt,
 77                buttonId = WebInterface.ACTION_BUTTON.BACKWARD, useRaycast = false, enablePointerEvent = false
 78            });
 79
 8580            buttonsMap.Add(new BUTTON_MAP()
 81            {
 82                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.RightButtonKeyCode,
 83                buttonId = WebInterface.ACTION_BUTTON.RIGHT, useRaycast = false, enablePointerEvent = false
 84            });
 8585            buttonsMap.Add(new BUTTON_MAP()
 86            {
 87                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.RightButtonKeyCodeAlt,
 88                buttonId = WebInterface.ACTION_BUTTON.RIGHT, useRaycast = false, enablePointerEvent = false
 89            });
 90
 8591            buttonsMap.Add(new BUTTON_MAP()
 92            {
 93                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.LeftButtonKeyCode,
 94                buttonId = WebInterface.ACTION_BUTTON.LEFT, useRaycast = false, enablePointerEvent = false
 95            });
 8596            buttonsMap.Add(new BUTTON_MAP()
 97            {
 98                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.LeftButtonKeyCodeAlt,
 99                buttonId = WebInterface.ACTION_BUTTON.LEFT, useRaycast = false, enablePointerEvent = false
 100            });
 101
 85102            buttonsMap.Add(new BUTTON_MAP()
 103            {
 104                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.WalkButtonKeyCode,
 105                buttonId = WebInterface.ACTION_BUTTON.WALK, useRaycast = false, enablePointerEvent = false
 106            });
 85107            buttonsMap.Add(new BUTTON_MAP()
 108            {
 109                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.JumpButtonKeyCode,
 110                buttonId = WebInterface.ACTION_BUTTON.JUMP, useRaycast = false, enablePointerEvent = false
 111            });
 112
 85113            buttonsMap.Add(new BUTTON_MAP()
 114            {
 115                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.ActionButton3Keycode,
 116                buttonId = WebInterface.ACTION_BUTTON.ACTION_3, useRaycast = true, enablePointerEvent = false
 117            });
 85118            buttonsMap.Add(new BUTTON_MAP()
 119            {
 120                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.ActionButton4Keycode,
 121                buttonId = WebInterface.ACTION_BUTTON.ACTION_4, useRaycast = true, enablePointerEvent = false
 122            });
 85123            buttonsMap.Add(new BUTTON_MAP()
 124            {
 125                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.ActionButton5Keycode,
 126                buttonId = WebInterface.ACTION_BUTTON.ACTION_5, useRaycast = true, enablePointerEvent = false
 127            });
 85128            buttonsMap.Add(new BUTTON_MAP()
 129            {
 130                type = BUTTON_TYPE.KEYBOARD, buttonNum = (int) InputSettings.ActionButton6Keycode,
 131                buttonId = WebInterface.ACTION_BUTTON.ACTION_6, useRaycast = true, enablePointerEvent = false
 132            });
 133
 85134            Environment.i.platform.updateEventHandler.AddListener(IUpdateEventHandler.EventType.Update, Update);
 85135        }
 136
 137        public void AddListener(WebInterface.ACTION_BUTTON buttonId, ButtonListenerCallback callback)
 138        {
 1105139            if (!listeners.ContainsKey(buttonId))
 1105140                listeners.Add(buttonId, new List<ButtonListenerCallback>());
 141
 1105142            if (!listeners[buttonId].Contains(callback))
 1105143                listeners[buttonId].Add(callback);
 1105144        }
 145
 146        public void RemoveListener(WebInterface.ACTION_BUTTON buttonId, ButtonListenerCallback callback)
 147        {
 1105148            if (listeners.ContainsKey(buttonId))
 149            {
 1105150                if (listeners[buttonId].Contains(callback))
 151                {
 1105152                    listeners[buttonId].Remove(callback);
 153
 1105154                    if (listeners[buttonId].Count == 0)
 1105155                        listeners.Remove(buttonId);
 156                }
 157            }
 1105158        }
 159
 160        // Note (Zak): it is public for testing purposes only
 161        public void RaiseEvent(WebInterface.ACTION_BUTTON buttonId, EVENT evt, bool useRaycast, bool enablePointerEvent)
 162        {
 14163            if (!listeners.ContainsKey(buttonId))
 0164                return;
 165
 14166            List<ButtonListenerCallback> callbacks = listeners[buttonId];
 14167            int count = callbacks.Count;
 168
 56169            for (int i = 0; i < count; i++)
 170            {
 14171                callbacks[i].Invoke(buttonId, evt, useRaycast, enablePointerEvent);
 172            }
 14173        }
 174
 175        public void Update()
 176        {
 7849177            if (!renderingEnabled)
 0178                return;
 179
 7849180            int count = buttonsMap.Count;
 181
 282564182            for (int i = 0; i < count; i++)
 183            {
 133433184                BUTTON_MAP btnMap = buttonsMap[i];
 185
 133433186                if (CommonScriptableObjects.allUIHidden.Get())
 187                    continue;
 188
 133433189                switch (btnMap.type)
 190                {
 7849191                    case BUTTON_TYPE.MOUSE when Input.GetMouseButtonDown(btnMap.buttonNum):
 125584192                    case BUTTON_TYPE.KEYBOARD when Input.GetKeyDown((KeyCode)btnMap.buttonNum):
 0193                        RaiseEvent(btnMap.buttonId, EVENT.BUTTON_DOWN, btnMap.useRaycast, btnMap.enablePointerEvent);
 0194                        break;
 7849195                    case BUTTON_TYPE.MOUSE when Input.GetMouseButtonUp(btnMap.buttonNum):
 125584196                    case BUTTON_TYPE.KEYBOARD when Input.GetKeyUp((KeyCode)btnMap.buttonNum):
 0197                        RaiseEvent(btnMap.buttonId, EVENT.BUTTON_UP, btnMap.useRaycast, btnMap.enablePointerEvent);
 198                        break;
 199                }
 200            }
 7849201        }
 202
 203        public bool IsPressed(WebInterface.ACTION_BUTTON button)
 204        {
 6499205            return button switch
 206                   {
 0207                       WebInterface.ACTION_BUTTON.POINTER => Input.GetMouseButton(0),
 1208                       WebInterface.ACTION_BUTTON.PRIMARY => Input.GetKey(InputSettings.PrimaryButtonKeyCode),
 0209                       WebInterface.ACTION_BUTTON.SECONDARY => Input.GetKey(InputSettings.SecondaryButtonKeyCode),
 6498210                       _ => Input.GetMouseButton(0) || Input.GetKey(InputSettings.PrimaryButtonKeyCode) || Input.GetKey(
 211                   };
 212        }
 213
 214        public void Dispose()
 215        {
 85216            Environment.i.platform.updateEventHandler.RemoveListener(IUpdateEventHandler.EventType.Update, Update);
 85217        }
 218    }
 219}