void GrabUpdate() { if (grabPoser) { skeleton.BlendToPoser(grabPoser, 0); posSavePoser = grabPoser.transform.localPosition; rotSavePoser = grabPoser.transform.localEulerAngles; grabPoser.transform.rotation = transform.rotation * grabPoser.GetBlendedPose(skeleton).rotation; grabPoser.transform.position = transform.TransformPoint(grabPoser.GetBlendedPose(skeleton).position); PivotUpdate(); inverceLocalPosition = grabPoser.transform.InverseTransformPoint(transform.position); grabPoser.transform.localPosition = posSavePoser; grabPoser.transform.localEulerAngles = rotSavePoser; GrabInteractible.SendMessage("GrabUpdate", this, SendMessageOptions.DontRequireReceiver); if (blend > 0) { blendToAnimation -= 1f / blend * Time.deltaTime; blendToAnimation = Mathf.Clamp01(blendToAnimation); blendToPose -= 1f / blendPosition * Time.deltaTime; blendToPose = Mathf.Clamp01(blendToPose); } else { blendToAnimation = 0; } skeleton.skeletonBlend = blendToAnimation; } }
public void GrabCheck() { if (grabType != GrabType.None && GrabInteractible) { if (grabType == GrabType.Pinch && pinchButton.GetStateUp(handType)) { GrabInteractible.SendMessage("GrabEnd", this, SendMessageOptions.DontRequireReceiver); GrabEnd(); } if (grabType == GrabType.Grip && grabButton.GetStateUp(handType)) { GrabInteractible.SendMessage("GrabEnd", this, SendMessageOptions.DontRequireReceiver); GrabEnd(); } } if (!grabPoser) { if (blend > 0) { blendToAnimation += 1f / blend * Time.deltaTime; blendToAnimation = Mathf.Clamp01(blendToAnimation); blendToPose += 1f / blendPosition * Time.deltaTime; blendToPose = Mathf.Clamp01(blendToPose); blendToPoseMoveObject += 1f / blendPosition * Time.deltaTime; blendToPoseMoveObject = Mathf.Clamp01(blendToPoseMoveObject); } else { blendToAnimation = 1; } CustomInteractible OldGrabInteractible = GrabInteractible; if (SelectedIndexInteractible) { GrabInteractible = SelectedIndexInteractible; if (GrabInteractible != OldGrabInteractible) { if (OldGrabInteractible) { OldGrabInteractible.SendMessage("GrabEnd", this, SendMessageOptions.DontRequireReceiver); } if (GrabInteractible) { GrabInteractible.SendMessage("GrabStart", this, SendMessageOptions.DontRequireReceiver); setHandTransform = false; grabType = GrabType.Select; RenderModelVisible(!GrabInteractible.HideController); SkeletonUpdate(); blendToPose = 1; blendToPoseMoveObject = 1; endFramePos = transform.parent.InverseTransformPoint(skeleton.transform.position); endFrameRot = skeleton.transform.rotation; } } } else { if (SelectedPinchInteractible && pinchButton.GetStateDown(handType)) { GrabInteractible = SelectedPinchInteractible; if (GrabInteractible != OldGrabInteractible) { if (OldGrabInteractible) { OldGrabInteractible.SendMessage("GrabEnd", this, SendMessageOptions.DontRequireReceiver); } if (GrabInteractible) { GrabInteractible.SendMessage("GrabStart", this, SendMessageOptions.DontRequireReceiver); setHandTransform = false; grabType = GrabType.Pinch; RenderModelVisible(!GrabInteractible.HideController); SkeletonUpdate(); blendToPose = 1; blendToPoseMoveObject = 1; endFramePos = transform.parent.InverseTransformPoint(skeleton.transform.position); endFrameRot = skeleton.transform.rotation; } } } else { if (SelectedGpibInteractible && grabButton.GetStateDown(handType)) { GrabInteractible = SelectedGpibInteractible; if (GrabInteractible != OldGrabInteractible) { if (OldGrabInteractible) { OldGrabInteractible.SendMessage("GrabEnd", this, SendMessageOptions.DontRequireReceiver); } if (GrabInteractible) { GrabInteractible.SendMessage("GrabStart", this, SendMessageOptions.DontRequireReceiver); setHandTransform = false; grabType = GrabType.Grip; RenderModelVisible(!GrabInteractible.HideController); SkeletonUpdate(); blendToPose = 1; blendToPoseMoveObject = 1; endFramePos = transform.parent.InverseTransformPoint(skeleton.transform.position); endFrameRot = skeleton.transform.rotation; } } } } } } }