Exemplo n.º 1
0
    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;
        }
    }
Exemplo n.º 2
0
    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;
                            }
                        }
                    }
                }
            }
        }
    }