private void CheckInitialization() { if (pointer == null) { pointer = GetComponent <SpherePointer>(); } if (pointer == null) { Debug.LogError($"No SpherePointer found on {gameObject.name}."); } CheckAsset(visualsRoot, "Visuals Root"); CheckAsset(tetherEndPoint, "Tether End Point"); CheckAsset(tetherLine, "Tether Line"); }
/// <summary> /// Gets if the associated sphere pointer on this controller is near any grabbable objects. /// </summary> /// <returns>True if associated sphere pointer is near any grabbable objects, else false.</returns> /// <param name="dist">Out parameter gets the distance to the grabbable.</param> protected virtual bool IsNearGrabbableObject() { if (cachedSpherePointer == null || cachedSpherePointer.Controller != Pointer.Controller) { IMixedRealityFocusProvider focusProvider = CoreServices.InputSystem?.FocusProvider; if (focusProvider.IsNotNull()) { var spherePointers = focusProvider.GetPointers <SpherePointer>(); foreach (var spherePointer in spherePointers) { if (spherePointer.Controller == Pointer.Controller) { cachedSpherePointer = spherePointer; break; } } } } return(cachedSpherePointer != null && cachedSpherePointer.IsNearObject); }