protected virtual void PointerSet()
    {
        if (!pointerContactTarget)
        {
            return;
        }

        SteamVR_InteractableObject interactableObject = pointerContactTarget.GetComponent <SteamVR_InteractableObject>();

        if (interactableObject && interactableObject.pointerActivatesUseAction)
        {
            if (interactableObject.IsUsing())
            {
                Debug.Log("interactableObject.StopUsing(this.gameObject);============");
                interactableObject.StopUsing(this.gameObject);
            }
            else if (!interactableObject.holdButtonToUse)
            {
                Debug.Log("interactableObject.StartUsing(this.gameObject);");
                interactableObject.StartUsing(this.gameObject);
            }
        }

        if (!playAreaCursorCollided && (interactableObject == null || !interactableObject.pointerActivatesUseAction))
        {
            OnWorldPointerDestinationSet(SetPointerEvent(controllerIndex, pointerContactDistance, pointerContactTarget, destinationPosition));
        }
    }
    protected virtual void PointerOut()
    {
        if (!pointerContactTarget)
        {
            return;
        }

        OnWorldPointerOut(SetPointerEvent(controllerIndex, pointerContactDistance, pointerContactTarget, destinationPosition));

        SteamVR_InteractableObject interactableObject = pointerContactTarget.GetComponent <SteamVR_InteractableObject>();

        if (interactableObject && interactableObject.pointerActivatesUseAction && interactableObject.holdButtonToUse)
        {
            interactableObject.StopUsing(this.gameObject);
        }
    }