public void PointOut(RayPointEventArgs e) { foreach (IRayPointer pointer in _rayPointers) { pointer.OnPointOut(e); } }
private void UpdateRaycast() { Ray ray = new Ray(transform.position, transform.forward); RaycastHit hit; bool bHit = Physics.Raycast(ray, out hit); if (_previousTarget && _previousTarget != hit.transform) { RayPointEventArgs argsOut = new RayPointEventArgs(); argsOut.distance = 0; argsOut.target = _previousTarget; RayPointerEventManager.instance?.PointOut(argsOut); _previousTarget = null; } if (bHit && _previousTarget != hit.transform) { RayPointEventArgs argsIn = new RayPointEventArgs(); argsIn.distance = hit.distance; argsIn.target = hit.transform; RayPointerEventManager.instance?.PointIn(argsIn); _previousTarget = hit.transform; } if (!bHit) { _previousTarget = null; } }
public void OnPointOut(RayPointEventArgs e) { if (e.target != null) { Debug.Log("OnPointerOut: " + SelectedObject.name); SelectedObject = null; DistanceOfSelectedObject = 0; } }
public void OnPointIn(RayPointEventArgs e) { if (e.target != null) { SelectedObject = e.target.gameObject; DistanceOfSelectedObject = e.distance; Debug.Log("OnPointerIn: " + SelectedObject.name + " Distance: " + e.distance); } }