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); } }