/// <summary> /// Release currently grabbed grabbable. /// </summary> public void Release() { if (grabbed == null) { return; } if (grabbed.Joint != null) { Destroy(grabbed.Joint); } var grabbable = grabbed.Grabbable; grabbable.Body.isKinematic = false; grabbable.grabbedBy = null; onRelease.Invoke(grabbable); grabbed = null; }
private void HandleMovingStart(Grabbable grabbable) { var otherGrabber = grabbable.grabbedBy; if (otherGrabber != null) { otherGrabber.Release(); } grabbable.grabbedBy = this; grabbable.Body.isKinematic = true; grabbed = new GrabbedGrabbable( grabbable: grabbable, moving: true ); if (IsMove(grabbable, transform.position)) { onMove.Invoke(grabbable); } }