A game about forced loneliness, made by TACStudios
at master 92 lines 3.6 kB view raw
1#if UNITY_EDITOR && UNITY_INPUT_SYSTEM_ENABLE_UI 2using System; 3using UnityEngine.InputSystem.OnScreen; 4 5namespace UnityEngine.InputSystem.Editor 6{ 7 /// <summary> 8 /// Analytics record for tracking engagement with Input Action Asset editor(s). 9 /// </summary> 10#if UNITY_2023_2_OR_NEWER 11 [UnityEngine.Analytics.AnalyticInfo(eventName: kEventName, maxEventsPerHour: kMaxEventsPerHour, 12 maxNumberOfElements: kMaxNumberOfElements, vendorKey: UnityEngine.InputSystem.InputAnalytics.kVendorKey, version: 2)] 13#endif // UNITY_2023_2_OR_NEWER 14 internal class OnScreenStickEditorAnalytic : UnityEngine.InputSystem.InputAnalytics.IInputAnalytic 15 { 16 public const string kEventName = "input_onscreenstick_editor_destroyed"; 17 public const int kMaxEventsPerHour = 100; // default: 1000 18 public const int kMaxNumberOfElements = 100; // default: 1000 19 20 /// <summary> 21 /// Represents select configuration data of interest related to an <see cref="OnScreenStick"/> component. 22 /// </summary> 23 [Serializable] 24 internal struct Data : UnityEngine.InputSystem.InputAnalytics.IInputAnalyticData 25 { 26 public enum OnScreenStickBehaviour 27 { 28 RelativePositionWithStaticOrigin = 0, 29 ExactPositionWithStaticOrigin = 1, 30 ExactPositionWithDynamicOrigin = 2, 31 } 32 33 private static OnScreenStickBehaviour ToBehaviour(OnScreenStick.Behaviour value) 34 { 35 switch (value) 36 { 37 case OnScreenStick.Behaviour.RelativePositionWithStaticOrigin: 38 return OnScreenStickBehaviour.RelativePositionWithStaticOrigin; 39 case OnScreenStick.Behaviour.ExactPositionWithDynamicOrigin: 40 return OnScreenStickBehaviour.ExactPositionWithDynamicOrigin; 41 case OnScreenStick.Behaviour.ExactPositionWithStaticOrigin: 42 return OnScreenStickBehaviour.ExactPositionWithStaticOrigin; 43 default: 44 throw new ArgumentOutOfRangeException(nameof(value)); 45 } 46 } 47 48 public Data(OnScreenStick value) 49 { 50 behavior = ToBehaviour(value.behaviour); 51 movement_range = value.movementRange; 52 dynamic_origin_range = value.dynamicOriginRange; 53 use_isolated_input_actions = value.useIsolatedInputActions; 54 } 55 56 public OnScreenStickBehaviour behavior; 57 public float movement_range; 58 public float dynamic_origin_range; 59 public bool use_isolated_input_actions; 60 } 61 62 private readonly UnityEditor.Editor m_Editor; 63 64 public OnScreenStickEditorAnalytic(UnityEditor.Editor editor) 65 { 66 m_Editor = editor; 67 } 68 69#if UNITY_2023_2_OR_NEWER 70 public bool TryGatherData(out UnityEngine.Analytics.IAnalytic.IData data, out Exception error) 71#else 72 public bool TryGatherData(out InputAnalytics.IInputAnalyticData data, out Exception error) 73#endif 74 { 75 try 76 { 77 data = new Data(m_Editor.target as OnScreenStick); 78 error = null; 79 } 80 catch (Exception e) 81 { 82 data = null; 83 error = e; 84 } 85 return true; 86 } 87 88 public InputAnalytics.InputAnalyticInfo info => 89 new InputAnalytics.InputAnalyticInfo(kEventName, kMaxEventsPerHour, kMaxNumberOfElements); 90 } 91} 92#endif // UNITY_EDITOR