A game about forced loneliness, made by TACStudios
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