Skip to content

Commit 261dfba

Browse files
author
lawwong
committed
Close #16, fix IPointerEnter/Exit not handled correctly when disabling a raycaster
Root cause: CleanUpRaycaster should resolve(pressUp, pointerExit) all the event data, but previously the hover evetn data is skipped and doesn't been resolved in the for-loop.
1 parent d42380c commit 261dfba

File tree

1 file changed

+6
-9
lines changed

1 file changed

+6
-9
lines changed

Assets/HTC.UnityPlugin/Pointer3D/Pointer3DInputModule.cs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -223,15 +223,12 @@ protected void CleanUpRaycaster(Pointer3DRaycaster raycaster)
223223
if (raycaster == null) { return; }
224224

225225
var hoverEventData = raycaster.HoverEventData;
226-
if (hoverEventData == null || raycaster.ButtonEventDataList.Count == 0) { return; }
227-
228-
hoverEventData.Reset();
229226

230227
// buttons event
231228
for (int i = 0, imax = raycaster.ButtonEventDataList.Count; i < imax; ++i)
232229
{
233230
var buttonEventData = raycaster.ButtonEventDataList[i];
234-
if (buttonEventData == null || buttonEventData == hoverEventData) { continue; }
231+
if (buttonEventData == null) { continue; }
235232

236233
buttonEventData.Reset();
237234

@@ -243,9 +240,9 @@ protected void CleanUpRaycaster(Pointer3DRaycaster raycaster)
243240

244241
if (buttonEventData.pointerEnter != null)
245242
{
246-
if (i == 0)
243+
if (buttonEventData == hoverEventData)
247244
{
248-
// perform exit event for hover event data
245+
// perform exit event only for hover event data
249246
HandlePointerExitAndEnter(buttonEventData, null);
250247
}
251248
else
@@ -286,9 +283,6 @@ protected virtual void ProcessRaycast()
286283
var raycaster = processingRaycasters[i];
287284
if (raycaster == null) { continue; }
288285

289-
var hoverEventData = raycaster.HoverEventData;
290-
if (hoverEventData == null || raycaster.ButtonEventDataList.Count == 0) { continue; }
291-
292286
raycaster.Raycast();
293287
var result = raycaster.FirstRaycastResult();
294288

@@ -297,6 +291,9 @@ protected virtual void ProcessRaycast()
297291
var raycasterPos = raycaster.transform.position;
298292
var raycasterRot = raycaster.transform.rotation;
299293

294+
var hoverEventData = raycaster.HoverEventData;
295+
if (hoverEventData == null) { continue; }
296+
300297
// gen shared data and put in hover event
301298
hoverEventData.Reset();
302299
hoverEventData.delta = Vector2.zero;

0 commit comments

Comments
 (0)