Beispiel #1
0
 public void GrabEnd(CustomHand hand)
 {
     if (typeReload == TypeReload.Slider)
     {
         enabled     = true;
         returnSpeed = 0;
         returnStart = ReloadObject.localPosition.z;
     }
     if (typeReload == TypeReload.LeverAction)
     {
         enabled = true;
     }
     if (typeReload == TypeReload.Revolver)
     {
         if (reloadFinish)
         {
             BulletOn.Invoke();
             ReloadObject.GetChild(0).localEulerAngles = new Vector3(0, 0, revolverBulletID * 360 / magazineRevolver.capacity);
         }
         if (HummerRevolver)
         {
             HummerRevolver.localEulerAngles = new Vector3(ClampPosition.x, 0);
         }
     }
     DettachHand(hand);
 }
Beispiel #2
0
 public void GrabEnd(CustomHand hand)
 {
     DettachHand(hand);
     if (!leftHand && !rightHand)
     {
         saveVariables.LoadProperty(MyRigidbody);
     }
     if (pickReleaseOnce)
     {
         if (!rightHand && !leftHand)
         {
             ReleaseHand.Invoke();                 //sound
         }
     }
     else
     {
         ReleaseHand.Invoke();
     }
     if (leftHand)
     {
         leftHand.SetBlendPose(1);
         leftHand.SetEndFramePos();
     }
     if (rightHand)
     {
         rightHand.SetBlendPose(1);
         rightHand.SetEndFramePos();
     }
 }
Beispiel #3
0
    public void GrabUpdate(CustomHand hand)
    {
        Transform tempPoser      = GetMyGrabPoserTransform(hand);
        Vector3   HandTolocalPos = transform.InverseTransformPoint(hand.pivotPoser.position);

        HandTolocalPos.z        = 0;
        tempPoser.localPosition = HandTolocalPos;


        if (hand.handType == SteamVR_Input_Sources.LeftHand)
        {
            angle -= Vector2.SignedAngle(tempPoser.localPosition, oldPosLeft) * (leftHand && rightHand?leftHand.squeeze == rightHand.squeeze?.5f:hand.squeeze / (Mathf.Epsilon + (leftHand.squeeze + rightHand.squeeze)) : 1f);

            oldPosLeft = new Vector2(HandTolocalPos.x, HandTolocalPos.y);
        }
        else
        {
            if (hand.handType == SteamVR_Input_Sources.RightHand)
            {
                angle -= Vector2.SignedAngle(tempPoser.localPosition, oldPosRight) * (leftHand && rightHand?leftHand.squeeze == rightHand.squeeze?.5f:hand.squeeze / (Mathf.Epsilon + (leftHand.squeeze + rightHand.squeeze)) : 1f);

                oldPosRight = new Vector2(HandTolocalPos.x, HandTolocalPos.y);
            }
        }
        angle = Mathf.Clamp(angle, -clamp, clamp);
        RotationObject.localEulerAngles = new Vector3(0, 0, angle);
        tempPoser.localPosition         = tempPoser.localPosition.normalized * radius;
        tempPoser.rotation = Quaternion.LookRotation(ReversHand? transform.forward:-transform.forward, tempPoser.position - transform.position);
    }
Beispiel #4
0
 void GrabUpdate(CustomHand hand)
 {
     if ((rightHand || leftHand) && GetMyGrabPoserTransform(hand))
     {
         hand.SkeletonUpdate();
         GetComponentInChildren <MeshRenderer>().material.color = Color.grey;
         float tempDistance = Mathf.Clamp(StartButtonPosition - (StartButtonPosition - transform.InverseTransformPoint(hand.PivotPoser.position).z) * DistanceMultiply, StartButtonPosition, distanseToPress);
         if (tempDistance >= distanseToPress)
         {
             GetComponentInChildren <MeshRenderer>().material.color = Color.blue;
             if (!press)
             {
                 ButtonDown.Invoke();
             }
             press = true;
             ButtonUpdate.Invoke();
         }
         else
         {
             if (press)
             {
                 ButtonUp.Invoke();
             }
             press = false;
         }
         MoveObject.localPosition = new Vector3(0, 0, tempDistance);
         MoveObject.rotation      = Quaternion.LookRotation(GetMyGrabPoserTransform(hand).forward, hand.PivotPoser.up);
         hand.GrabUpdateCustom();
     }
 }
Beispiel #5
0
 void GrabStart(CustomHand hand)
 {
     SetInteractibleVariable(hand);
     hand.SkeletonUpdate();
     hand.grabType = CustomHand.GrabType.Select;
     Grab.Invoke();
 }
Beispiel #6
0
    public void CustomUpdate(CustomHand hand)
    {
        if (weaponController.GetMyGrabPoser(hand) == weaponController.grabPoints[0]) // check if hand holding a handle with trigger
        {
            triggerAxis = triggerState.GetAxis(hand.handType);

            if (triggerClick.GetStateDown(hand.handType) && state == 0)
            {
                state = 1;
                //weaponController.Shoot();
            }
            else if (triggerClick.GetStateUp(hand.handType))
            {
                state = 2;
            }
            else if (state == 2 && triggerAxis < 0.5f)
            {
                state = 0;
            }

            TriggerTransformMovement(triggerAxis);
        }
        else
        {
            return;
        }
    }
Beispiel #7
0
    //
    public void GrabStart(CustomHand hand)
    {
        // power steering stuff
        PowerSteeringActive = false;
        //
        SetInteractibleVariable(hand);
        hand.SkeletonUpdate();
        hand.PivotUpdate();
        Transform tempPoser      = GetMyGrabPoserTransform(hand);
        Vector3   HandTolocalPos = transform.InverseTransformPoint(hand.PivotPoser.position);

        HandTolocalPos.z        = 0;
        tempPoser.localPosition = HandTolocalPos;
        if (hand.handType == SteamVR_Input_Sources.LeftHand)
        {
            oldPosLeft = new Vector2(HandTolocalPos.x, HandTolocalPos.y);
        }
        else
        {
            if (hand.handType == SteamVR_Input_Sources.RightHand)
            {
                oldPosRight = new Vector2(HandTolocalPos.x, HandTolocalPos.y);
            }
        }
        ReversHand = Vector3.Angle(transform.forward, hand.PivotPoser.forward) < 90;
        Grab.Invoke();
    }
Beispiel #8
0
 public void GrabUpdate(CustomHand hand)
 {
     angle = -Vector2.SignedAngle(new Vector2(transform.InverseTransformPoint(hand.PivotPoser.position).y, transform.InverseTransformPoint(hand.PivotPoser.position).z), Vector2.up);
     MoveObject.localEulerAngles = new Vector3(Mathf.Clamp(angle, Switch.x, Switch.y), 0);
     //hand position, if you need them not rotating
     //GetMyGrabPoserTransform (hand).position = RotationObject.position+ RotationObject.forward * distance;
 }
Beispiel #9
0
 public void GrabUpdate(CustomHand hand)
 {
     if (fillBehavior == FillBehavior.FillOnCommand)
     {
         FillMagUpdateCheck(hand);
     }
 }
Beispiel #10
0
    public void GrabEnd(CustomHand hand)
    {
        // powerSteering stuff

        //
        DettachHand(hand);
        ReleaseHand.Invoke();
    }
 public void GrabEnd(CustomHand hand)
 {
     DetachHand(hand);
     if (returnToZero)
     {
         enabled = true;
     }
     releaseHand.Invoke();
 }
Beispiel #12
0
    Vector3 oldDir;                  //old hands rotation

    public void GrabStart(CustomHand hand)
    {
        SetInteractibleVariable(hand);
        hand.SkeletonUpdate();
        GetMyGrabPoserTransform(hand).rotation = Quaternion.LookRotation(transform.forward, hand.PivotPoser.up);
        oldDir = transform.InverseTransformDirection(hand.PivotPoser.up);
        GetMyGrabPoserTransform(hand).transform.position = hand.PivotPoser.position;
        Grab.Invoke();
    }
Beispiel #13
0
    void GrabEnd(CustomHand hand)
    {
        //if ((rightHand || leftHand) && GetMyGrabPoserTransform(hand))
        //{
        MoveObject.localPosition = new Vector3(0, 0, StartButtonPosition);
        DettachHand(hand);

        GetComponentInChildren <MeshRenderer>().material.color = Color.green;
        //}
        ReleaseHand.Invoke();
    }
Beispiel #14
0
 void FillMagUpdateCheck(CustomHand hand)
 {
     if (LowerButtonClick.GetStateUp(hand.handType))
     {
         fillCommandClick = false;
     }
     if (!fillCommandClick && LowerButtonClick.GetStateDown(hand.handType))
     {
         FillMagazine();
     }
 }
Beispiel #15
0
 public void GrabUpdate(CustomHand hand)
 {
     angle += Vector3.SignedAngle(oldDir, transform.InverseTransformDirection(hand.PivotPoser.up), Vector3.forward);
     if (clamp != Vector2.zero)
     {
         angle = Mathf.Clamp(angle, clamp.x, clamp.y);
     }
     RotationObject.localEulerAngles = new Vector3(0, 0, angle);
     GetMyGrabPoserTransform(hand).transform.position = transform.position;         // Vector3.MoveTowards (GetMyGrabPoserTransform (hand).transform.position, transform.TransformPoint(Vector3.zero), Time.deltaTime*.5f);
     oldDir = transform.InverseTransformDirection(hand.PivotPoser.up);
 }
Beispiel #16
0
 public SteamVR_Skeleton_Poser GetMyGrabPoser(CustomHand hand)
 {
     if (hand.handType == SteamVR_Input_Sources.LeftHand && leftMyGrabPoser)
     {
         return(leftMyGrabPoser);
     }
     if (hand.handType == SteamVR_Input_Sources.RightHand && rightMyGrabPoser)
     {
         return(rightMyGrabPoser);
     }
     return(null);
 }
Beispiel #17
0
 public Transform GetMyGrabPoserTransform(CustomHand hand)
 {
     if (hand.handType == SteamVR_Input_Sources.LeftHand && leftMyGrabPoser)
     {
         return(leftMyGrabPoser.transform);
     }
     if (hand.handType == SteamVR_Input_Sources.RightHand && rightMyGrabPoser)
     {
         return(rightMyGrabPoser.transform);
     }
     return(null);
 }
 public void HoldOpenReleaseUpdate(CustomHand hand)
 {
     if (UpperButtonClick.GetStateUp(hand.handType))
     {
         holdOpenReleaseClick = false;
     }
     if (!holdOpenReleaseClick && UpperButtonClick.GetStateDown(hand.handType))
     {
         manualReload.enabled  = true;
         manualReload.holdOpen = false;
         holdOpenReleaseClick  = true;
     }
 }
Beispiel #19
0
 public void GrabStart(CustomHand hand)
 {
     if (weaponController)
     {
         IEnumerator coroutine = weaponController.DetachDelay(.25f, false);
         weaponController.StartCoroutine(coroutine);
         transform.parent             = null;
         weaponController.attachedMag = null;
         weaponController             = null;
         gameObject.layer             = defaultLayer;
         stikingAmmo.layer            = defaultLayer;
     }
 }
Beispiel #20
0
    public void customUpdate(CustomHand hand)
    {
        if (triggerClick.GetStateUp(hand.handType))
        {
            isClick = false;
        }
        switch (typeShoot)
        {
        case TypeShoot.Semi:

            if (!isClick && triggerClick.GetStateDown(hand.handType))
            {
                if (manualReload.typeReload == ManualReload.TypeReload.Revolver)
                {
                    manualReload.RevolverNextBullet();
                }
                if (manualReload.reloadFinish && primitiveWeapon.Shoot())
                {
                    isClick = true;
                    if (manualReload.typeReload == ManualReload.TypeReload.Slider)
                    {
                        manualReload.enabled = true;
                    }
                }
            }
            break;

        case TypeShoot.Automatic:
            if (triggerClick.GetState(hand.handType) && manualReload.reloadFinish && primitiveWeapon.Shoot())
            {
                if (manualReload.typeReload == ManualReload.TypeReload.Slider)
                {
                    manualReload.enabled = true;
                }
            }
            break;

        default:
            break;
        }

        Axis = triggerAxis.GetAxis(hand.handType);

        transform.localEulerAngles = new Vector3(Mathf.Lerp(angle.x, angle.y, Axis), 0);


        if (manualReload.typeReload == ManualReload.TypeReload.Revolver)
        {
            manualReload.CustomRevolverUpdate();
        }
    }
Beispiel #21
0
 public void DettachHand(CustomHand hand)
 {
     hand.DetachHand();
     if (hand.handType == SteamVR_Input_Sources.LeftHand)
     {
         leftMyGrabPoser = null;
         leftHand        = null;
     }
     if (hand.handType == SteamVR_Input_Sources.RightHand)
     {
         rightMyGrabPoser = null;
         rightHand        = null;
     }
 }
Beispiel #22
0
    public void GrabStartCustom(CustomHand hand)
    {
        Vector3 tempPosHandLocal = transform.InverseTransformPoint(hand.GrabPoint());

        tempPosHandLocal.x             = 0;
        tempPosHandLocal.y             = 0;
        MyRigidbody.useGravity         = false;
        MyRigidbody.isKinematic        = false;
        MyRigidbody.maxAngularVelocity = float.MaxValue;

        if (tempPosHandLocal.z > clampHandlePosZ.x && tempPosHandLocal.z < clampHandlePosZ.y)
        {
            if (hand.handType == SteamVR_Input_Sources.LeftHand)
            {
                SetInteractibleVariable(hand, handleObject [0]);
                handleObject [0].transform.localPosition = tempPosHandLocal;
            }
            else
            {
                if (hand.handType == SteamVR_Input_Sources.RightHand)
                {
                    SetInteractibleVariable(hand, handleObject [1]);
                    handleObject [1].transform.localPosition = tempPosHandLocal;
                }
            }
        }
        else
        {
            SetInteractibleVariable(hand);
        }

        if (leftHand && rightHand)
        {
            leftIsForvard = transform.InverseTransformPoint(leftMyGrabPoser.transform.position).z > transform.InverseTransformPoint(rightMyGrabPoser.transform.position).z;
            LocalDirectionWithPivotLeft  = leftMyGrabPoser.transform.InverseTransformDirection(transform.up);
            LocalDirectionWithPivotRight = rightMyGrabPoser.transform.InverseTransformDirection(transform.up);
        }
        if (pickReleaseOnce)
        {
            if (!leftHand || !rightHand)
            {
                Grab.Invoke();                 //sound
            }
        }
        else
        {
            Grab.Invoke();
        }
    }
Beispiel #23
0
 public void DettachHands()
 {
     if (leftHand)
     {
         leftHand.DetachHand();
         leftMyGrabPoser = null;
         leftHand        = null;
     }
     if (rightHand)
     {
         rightHand.DetachHand();
         rightMyGrabPoser = null;
         rightHand        = null;
     }
 }
Beispiel #24
0
 public void GrabEnd(CustomHand hand)
 {
     onOrOff = angle < 0;
     if (onOrOff)
     {
         SwithOn.Invoke();
     }
     else
     {
         SwithOff.Invoke();
     }
     MoveObject.localEulerAngles = new Vector3(angle < 0?Switch.x:Switch.y, 0);
     DettachHand(hand);
     ReleaseHand.Invoke();
 }
Beispiel #25
0
    public void customUpdate(CustomHand hand)
    {
        //Debug.Log(hand.handType); // returns LeftHand or RightHand
        switch (hand.handType.ToString())
        {
        case "LeftHand":
            l_Axis = triggerAxis.GetAxis(hand.handType);
            break;

        case "RightHand":
            r_Axis = triggerAxis.GetAxis(hand.handType) * -1;
            break;

        default:
            break;
        }
    }
Beispiel #26
0
 public void GrabStart(CustomHand hand)
 {
     if (primitiveWeapon)
     {
         primitiveWeapon.attachMagazine = null;
         transform.parent = null;
         canLoad          = true;
         for (int i = 0; i < primitiveWeapon.myCollidersToIgnore.Length; i++)
         {
             for (int j = 0; j < MagazineColliders.Length; j++)
             {
                 Physics.IgnoreCollision(primitiveWeapon.myCollidersToIgnore[i], MagazineColliders[j], false);
             }
         }
         primitiveWeapon = null;
     }
 }
Beispiel #27
0
    public void GrabUpdate(CustomHand hand)
    {
        GrabUpdateCustom(hand);

        if (GetMyGrabPoser(hand) == triggerPoser)
        {
            trigger.customUpdate(hand);
        }
        if (recoil)
        {
            MyRigidbody.velocity        += transform.TransformDirection(recoil.localPosition / Time.fixedDeltaTime);
            MyRigidbody.angularVelocity += PhysicalObject.GetAngularVelocities(transform.rotation, recoil.rotation, hand.GetBlend());
        }


        RecoilReturn();
    }
Beispiel #28
0
 public bool CanSelected(CustomHand hand)
 {
     if (!leftHand && !rightHand)
     {
         return(true);
     }
     else
     {
         if ((leftHand && leftHand == hand) || (rightHand && rightHand == hand))
         {
             return(true);
         }
         else
         {
             return(false);
         }
     }
 }
 public void MagReleaseUpdate(CustomHand hand)
 {
     //Debug.Log("dropped mag button checked");
     if (LowerButtonClick.GetStateUp(hand.handType))
     {
         magReleaseClick = false;
     }
     if (!magReleaseClick && LowerButtonClick.GetStateDown(hand.handType))
     {
         //Debug.Log("dropped mag button clicked");
         // do the mag release
         if (attachMagazine != null)
         {
             attachMagazine.DropMagazine();
         }
         magReleaseClick = true;
     }
 }
Beispiel #30
0
    public void GrabEndCustom(CustomHand hand)
    {
        DettachHand(hand);

        if (!leftHand && !rightHand)
        {
            saveVariables.LoadProperty(MyRigidbody);
        }
        if (pickReleaseOnce)
        {
            if (!rightHand && !leftHand)
            {
                ReleaseHand.Invoke();                 //sound
            }
        }
        else
        {
            ReleaseHand.Invoke();
        }
    }