Skip to content

Commit 692e2ae

Browse files
ToString() modifications:
- ExtendedPointerEventData: Reduce allocations by using Append calls more and using GenericPool for acquiring StringBuilder. - InputSystemUIInputModule: Implement ToString() to satisfy file-header TODO and match PointerInputModule (uGUI Package) implementation.
1 parent c0cd81a commit 692e2ae

2 files changed

Lines changed: 94 additions & 20 deletions

File tree

Packages/com.unity.inputsystem/InputSystem/Runtime/Plugins/UI/ExtendedPointerEventData.cs

Lines changed: 58 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using UnityEngine.EventSystems;
44
using UnityEngine.InputSystem.Controls;
55
using UnityEngine.InputSystem.Utilities;
6+
using UnityEngine.Pool;
67

78
namespace UnityEngine.InputSystem.UI
89
{
@@ -78,24 +79,63 @@ public ExtendedPointerEventData(EventSystem eventSystem)
7879

7980
public override string ToString()
8081
{
81-
var stringBuilder = new StringBuilder();
82-
stringBuilder.Append(base.ToString());
83-
stringBuilder.AppendLine("button: " + button); // Defined in PointerEventData but PointerEventData.ToString() does not include it.
84-
stringBuilder.AppendLine("clickTime: " + clickTime); // Same here.
85-
stringBuilder.AppendLine("clickCount: " + clickCount); // Same here.
86-
stringBuilder.AppendLine("device: " + device);
87-
stringBuilder.AppendLine("pointerType: " + pointerType);
88-
stringBuilder.AppendLine("touchId: " + touchId);
89-
stringBuilder.AppendLine("pressPosition: " + pressPosition);
90-
stringBuilder.AppendLine("trackedDevicePosition: " + trackedDevicePosition);
91-
stringBuilder.AppendLine("trackedDeviceOrientation: " + trackedDeviceOrientation);
92-
stringBuilder.AppendLine("pressure" + pressure);
93-
stringBuilder.AppendLine("radius: " + radius);
94-
stringBuilder.AppendLine("azimuthAngle: " + azimuthAngle);
95-
stringBuilder.AppendLine("altitudeAngle: " + altitudeAngle);
96-
stringBuilder.AppendLine("twist: " + twist);
97-
stringBuilder.AppendLine("displayIndex: " + displayIndex);
98-
return stringBuilder.ToString();
82+
var stringBuilder = GenericPool<StringBuilder>.Get();
83+
try
84+
{
85+
stringBuilder.Clear();
86+
stringBuilder.Append(base.ToString());
87+
stringBuilder.Append("button: "); // Defined in PointerEventData but PointerEventData.ToString() does not include it.
88+
stringBuilder.Append(button);
89+
stringBuilder.AppendLine();
90+
stringBuilder.Append("clickTime: "); // Same here.
91+
stringBuilder.Append(clickTime);
92+
stringBuilder.AppendLine();
93+
stringBuilder.Append("clickCount: "); // Same here.
94+
stringBuilder.Append(clickCount);
95+
stringBuilder.AppendLine();
96+
stringBuilder.Append("device: ");
97+
stringBuilder.Append(device);
98+
stringBuilder.AppendLine();
99+
stringBuilder.Append("pointerType: ");
100+
stringBuilder.Append(pointerType);
101+
stringBuilder.AppendLine();
102+
stringBuilder.Append("touchId: ");
103+
stringBuilder.Append(touchId);
104+
stringBuilder.AppendLine();
105+
stringBuilder.Append("pressPosition: ");
106+
stringBuilder.Append(pressPosition);
107+
stringBuilder.AppendLine();
108+
stringBuilder.Append("trackedDevicePosition: ");
109+
stringBuilder.Append(trackedDevicePosition);
110+
stringBuilder.AppendLine();
111+
stringBuilder.Append("trackedDeviceOrientation: ");
112+
stringBuilder.Append(trackedDeviceOrientation);
113+
stringBuilder.AppendLine();
114+
stringBuilder.Append("pressure: ");
115+
stringBuilder.Append(pressure);
116+
stringBuilder.AppendLine();
117+
stringBuilder.Append("radius: ");
118+
stringBuilder.Append(radius);
119+
stringBuilder.AppendLine();
120+
stringBuilder.Append("azimuthAngle: ");
121+
stringBuilder.Append(azimuthAngle);
122+
stringBuilder.AppendLine();
123+
stringBuilder.Append("altitudeAngle: ");
124+
stringBuilder.Append(altitudeAngle);
125+
stringBuilder.AppendLine();
126+
stringBuilder.Append("twist: ");
127+
stringBuilder.Append(twist);
128+
stringBuilder.AppendLine();
129+
stringBuilder.Append("displayIndex: ");
130+
stringBuilder.Append(displayIndex);
131+
stringBuilder.AppendLine();
132+
return stringBuilder.ToString();
133+
}
134+
finally
135+
{
136+
stringBuilder.Clear();
137+
GenericPool<StringBuilder>.Release(stringBuilder);
138+
}
99139
}
100140

101141
internal static int MakePointerIdForTouch(int deviceId, int touchId)

Packages/com.unity.inputsystem/InputSystem/Runtime/Plugins/UI/InputSystemUIInputModule.cs

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
#if PACKAGE_DOCS_GENERATION || UNITY_INPUT_SYSTEM_ENABLE_UI
22
using System;
33
using System.Collections.Generic;
4+
using System.Text;
45
using UnityEngine.EventSystems;
56
using UnityEngine.InputSystem.Controls;
67
using UnityEngine.InputSystem.LowLevel;
78
using UnityEngine.InputSystem.Utilities;
9+
using UnityEngine.Pool;
810
using UnityEngine.Serialization;
911
using UnityEngine.UI;
1012
////FIXME: The UI is currently not reacting to pointers until they are moved after the UI module has been enabled. What needs to
@@ -27,8 +29,6 @@
2729
////TODO: add ability to query which device was last used with any of the actions
2830
////REVIEW: also give access to the last/current UI event?
2931

30-
////TODO: ToString() method a la PointerInputModule
31-
3232
namespace UnityEngine.InputSystem.UI
3333
{
3434
/// <summary>
@@ -2432,6 +2432,40 @@ public override int ConvertUIToolkitPointerId(PointerEventData sourcePointerData
24322432
: base.ConvertUIToolkitPointerId(sourcePointerData);
24332433
}
24342434

2435+
public override string ToString()
2436+
{
2437+
var sb = GenericPool<StringBuilder>.Get();
2438+
try
2439+
{
2440+
sb.Clear();
2441+
sb.Append("<b>Pointer Input Module of type: </b>");
2442+
sb.Append(GetType());
2443+
sb.AppendLine();
2444+
sb.AppendLine();
2445+
2446+
if (m_PointerStates.length == 0)
2447+
sb.AppendLine("No active pointers.");
2448+
2449+
for (var i = 0; i < m_PointerStates.length; ++i)
2450+
{
2451+
var eventData = m_PointerStates[i].eventData;
2452+
if (eventData == null)
2453+
continue;
2454+
sb.Append("<b>Pointer:</b> ");
2455+
sb.Append(m_PointerIds[i]);
2456+
sb.AppendLine();
2457+
sb.AppendLine(eventData.ToString());
2458+
}
2459+
2460+
return sb.ToString();
2461+
}
2462+
finally
2463+
{
2464+
sb.Clear();
2465+
GenericPool<StringBuilder>.Release(sb);
2466+
}
2467+
}
2468+
24352469
#if UNITY_INPUT_SYSTEM_INPUT_MODULE_SCROLL_DELTA
24362470
const float kSmallestScrollDeltaPerTick = 0.00001f;
24372471
public override Vector2 ConvertPointerEventScrollDeltaToTicks(Vector2 scrollDelta)

0 commit comments

Comments
 (0)