6 using System.Collections.Generic;
17 #region Public Members 18 [Tooltip(
"Target interactable Object to receive events for")]
22 public List<GameObject> interactables =
new List<GameObject>();
27 [Tooltip(
"Targets for the receiver to ")]
28 public List<GameObject> Targets =
new List<GameObject>();
42 CheckLockFocus(_selectingFocuser);
47 #region Private and Protected Members 48 [Tooltip(
"If true, this object will remain the prime focus while select is held")]
50 private bool lockFocus =
false;
89 if (interactable == null || interactables.Contains(interactable))
94 interactables.Add(interactable);
98 protected virtual void OnDrawGizmosSelected()
103 if (this.interactables.Count > 0)
105 GameObject[] bioList = this.interactables.ToArray();
107 for (
int i = 0; i < bioList.Length; i++)
109 if (bioList[i] != null)
111 Gizmos.color = Color.green;
112 Gizmos.DrawLine(this.transform.position, bioList[i].transform.position);
117 if (this.Targets.Count > 0)
119 GameObject[] targetList = this.Targets.ToArray();
121 for (
int i = 0; i < targetList.Length; i++)
123 if (targetList[i] != null)
125 Gizmos.color = Color.red;
126 Gizmos.DrawLine(this.transform.position, targetList[i].transform.position);
140 if (interactable != null && interactables.Contains(interactable))
142 interactables.Remove(interactable);
151 GameObject[] _intList = interactables.ToArray();
153 for (
int i = 0; i < _intList.Length; i++)
155 this.Removeinteractable(_intList[i]);
166 return (interactables != null && interactables.Contains(interactable));
172 if (_selectingFocuser != null && _selectingFocuser != focuser)
182 _selectingFocuser = focuser;
183 if (_selectingFocuser != null)
194 _selectingFocuser = focuser;
199 private void ReleaseFocuser()
201 if (_selectingFocuser != null)
204 _selectingFocuser = null;
214 private void OnPointerSpecificFocusChanged(
IPointingSource pointer, GameObject oldFocusedObject, GameObject newFocusedObject)
219 if (newFocusedObject != null && Isinteractable(newFocusedObject))
221 FocusEnter(newFocusedObject, eventData);
224 if (oldFocusedObject != null && Isinteractable(oldFocusedObject))
226 FocusExit(oldFocusedObject, eventData);
229 CheckLockFocus(pointer);
232 #region Global Listener Callbacks 235 if (Isinteractable(eventData.selectedObject))
237 InputDown(eventData.selectedObject, eventData);
243 if (Isinteractable(eventData.selectedObject))
245 InputUp(eventData.selectedObject, eventData);
251 if (Isinteractable(eventData.selectedObject))
253 InputClicked(eventData.selectedObject, eventData);
259 if (Isinteractable(eventData.selectedObject))
261 HoldStarted(eventData.selectedObject, eventData);
267 if (Isinteractable(eventData.selectedObject))
269 HoldCompleted(eventData.selectedObject, eventData);
275 if (Isinteractable(eventData.selectedObject))
277 HoldCanceled(eventData.selectedObject, eventData);
283 if (Isinteractable(eventData.selectedObject))
285 ManipulationStarted(eventData.selectedObject, eventData);
291 if (Isinteractable(eventData.selectedObject))
293 ManipulationUpdated(eventData.selectedObject, eventData);
299 if (Isinteractable(eventData.selectedObject))
301 ManipulationCompleted(eventData.selectedObject, eventData);
307 if (Isinteractable(eventData.selectedObject))
309 ManipulationCanceled(eventData.selectedObject, eventData);
315 if (Isinteractable(eventData.selectedObject))
317 NavigationStarted(eventData.selectedObject, eventData);
323 if (Isinteractable(eventData.selectedObject))
325 NavigationUpdated(eventData.selectedObject, eventData);
331 if (Isinteractable(eventData.selectedObject))
333 NavigationCompleted(eventData.selectedObject, eventData);
339 if (Isinteractable(eventData.selectedObject))
341 NavigationCanceled(eventData.selectedObject, eventData);
346 #region Protected Virtual Callback Functions