protected virtual void PointerSet() { if (!enabled || !destinationSetActive || !pointerContactTarget || !CanActivate() || InvalidConstantBeam()) { return; } activateDelayTimer = Time.time + activateDelay; var setInteractableObject = pointerContactTarget.GetComponent <VRTK_InteractableObject>(); if (PointerActivatesUseAction(setInteractableObject)) { if (setInteractableObject.IsUsing()) { setInteractableObject.StopUsing(gameObject); } else if (!setInteractableObject.holdButtonToUse) { setInteractableObject.StartUsing(gameObject); } } if ((!playAreaCursor || !playAreaCursor.HasCollided()) && !PointerActivatesUseAction(interactableObject)) { OnDestinationMarkerSet(SetDestinationMarkerEvent(pointerContactDistance, pointerContactTarget, pointerContactRaycastHit, destinationPosition, controllerIndex)); } if (!isActive) { destinationSetActive = false; } }
/// <summary> /// The ValidPlayArea method is used to determine if there is a valid play area and if it has had any collisions. /// </summary> /// <returns>Returns true if there is a valid play area and no collisions. Returns false if there is no valid play area or there is but with a collision detected.</returns> public virtual bool ValidPlayArea() { return(!playareaCursor || !playareaCursor.IsActive() || !playareaCursor.HasCollided()); }