virtual public bool TryPickup()
        {
            if (_heldItem != null ||             /*already holding something*/
                hoverItem == null ||             /*have something were hovering over*/
                (hoverItem.holdType != VRInteractableItem.HoldType.SPRING_JOINT && hoverItem.heldBy != null) /*Thing were hovering over is not a joint hold and is already being held*/)
            {
                return(false);
            }
            _heldItem = hoverItem;
            _heldItem.DisableHover(this);
            if (!_heldItem.Pickup(this))             /*Is the item alright with us picking it up*/
            {
                _heldItem = null;
                return(false);
            }
            hoverItem = null;

            if (hideControllersWhileHolding)
            {
                ToggleControllers(false);
            }

            VREvent.Send("Pickup", new object[] { _heldItem });
            return(true);
        }
        virtual public void Drop()
        {
            if (_heldItem == null || beingDestroyed)
            {
                return;
            }
            VREvent.Send("Drop", new object[] { _heldItem });
            if (hoverItem != null)
            {
                hoverItem.DisableHover(this);
                hoverItem = null;
            }
            _lastDropped = Time.time;
            _heldItem.Drop(true, this);
            _heldItem = null;

            if (hideControllersWhileHolding)
            {
                ToggleControllers(true);
            }
        }