// happens on grab by controller public virtual void OnGrab(GameObject grabGO) { MoveToNearestGrabPoint(grabGO.transform); //Debug.Log(controllerWrapper.name + " grabbed " + name); if (rigidbody != null) { if (grabMethod == GrabMethod.RigidbodyJoint) { // grab with a joint on controller JointGrabUtils.JointGrab(grabGO.transform, rigidbody); } else if (grabMethod == GrabMethod.RigidbodyKinematicMove) { TransformGrabUtils.RigidbodyGrab(grabGO, rigidbody); } } else { if (grabMethod == GrabMethod.TransformOnlyPosition) { TransformGrabUtils.TransformGrab(grabGO, transform, true, false); } else if (grabMethod == GrabMethod.transformOnlyRotation) { TransformGrabUtils.TransformGrab(grabGO, transform, false, true); } else if (grabMethod == GrabMethod.TransformMove) { TransformGrabUtils.TransformGrab(grabGO, transform); } else { TransformGrabUtils.TransformGrab(grabGO, transform); } } whoGrabbin.Add(grabGO); if (OnGrabEvent != null) { OnGrabEvent(grabGO); } }
// happens on ungrab by controller public virtual void OnUngrab(GameObject grabGO) { //Debug.Log(controllerWrapper.name + " released " + name); if (rigidbody != null) { JointGrabUtils.JointUngrab(grabGO.transform, rigidbody); } else { TransformGrabUtils.TransformUngrab(grabGO, transform); } whoGrabbin.Remove(grabGO); if (OnUngrabEvent != null) { OnUngrabEvent(grabGO); } }