A game about forced loneliness, made by TACStudios
1#if UNITY_EDITOR && UNITY_INPUT_SYSTEM_ENABLE_UI
2using System;
3using UnityEngine.InputSystem.UI;
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)]
13#endif // UNITY_2023_2_OR_NEWER
14 internal class VirtualMouseInputEditorAnalytic : UnityEngine.InputSystem.InputAnalytics.IInputAnalytic
15 {
16 public const string kEventName = "input_virtualmouseinput_editor_destroyed";
17 public const int kMaxEventsPerHour = 100; // default: 1000
18 public const int kMaxNumberOfElements = 100; // default: 1000
19
20 [Serializable]
21 internal struct Data : UnityEngine.InputSystem.InputAnalytics.IInputAnalyticData
22 {
23 /// <summary>
24 /// Maps to <see cref="VirtualMouseInput.cursorMode"/>. Determines which cursor representation to use.
25 /// </summary>
26 public CursorMode cursor_mode;
27
28 /// <summary>
29 /// Maps to <see cref="VirtualMouseInput.cursorSpeed" />. Speed in pixels per second with which to move the cursor.
30 /// </summary>
31 public float cursor_speed;
32
33 /// <summary>
34 /// Maps to <see cref="VirtualMouseInput.cursorMode"/>. Multiplier for values received from <see cref="VirtualMouseInput.scrollWheelAction"/>.
35 /// </summary>
36 public float scroll_speed;
37
38 public enum CursorMode
39 {
40 SoftwareCursor = 0,
41 HardwareCursorIfAvailable = 1
42 }
43
44 private static CursorMode ToCursorMode(VirtualMouseInput.CursorMode value)
45 {
46 switch (value)
47 {
48 case VirtualMouseInput.CursorMode.SoftwareCursor:
49 return CursorMode.SoftwareCursor;
50 case VirtualMouseInput.CursorMode.HardwareCursorIfAvailable:
51 return CursorMode.HardwareCursorIfAvailable;
52 default:
53 throw new ArgumentOutOfRangeException(nameof(value));
54 }
55 }
56
57 public Data(VirtualMouseInput value)
58 {
59 cursor_mode = ToCursorMode(value.cursorMode);
60 cursor_speed = value.cursorSpeed;
61 scroll_speed = value.scrollSpeed;
62 }
63 }
64
65 public InputAnalytics.InputAnalyticInfo info =>
66 new InputAnalytics.InputAnalyticInfo(kEventName, kMaxEventsPerHour, kMaxNumberOfElements);
67
68 private readonly UnityEditor.Editor m_Editor;
69
70 public VirtualMouseInputEditorAnalytic(UnityEditor.Editor editor)
71 {
72 m_Editor = editor;
73 }
74
75#if UNITY_2023_2_OR_NEWER
76 public bool TryGatherData(out UnityEngine.Analytics.IAnalytic.IData data, out Exception error)
77#else
78 public bool TryGatherData(out InputAnalytics.IInputAnalyticData data, out Exception error)
79#endif
80 {
81 try
82 {
83 data = new Data(m_Editor.target as VirtualMouseInput);
84 error = null;
85 }
86 catch (Exception e)
87 {
88 data = null;
89 error = e;
90 }
91 return true;
92 }
93 }
94}
95#endif