// Use this for initialization
    void Start()
    {
        HandsManager player = GameObject.FindGameObjectWithTag("Player").GetComponent <HandsManager>();

        oldLeftPos  = player.leftHand.transform.position;
        oldRightPos = player.rightHand.transform.position;
    }
    private IEnumerator Start()
    {
        while (!HandsManager.Instance || !HandsManager.Instance.IsInitialized())
        {
            yield return(null);
        }

        _handManager  = HandsManager.Instance;
        _handSkeleton = GetComponentInParent <OVRSkeleton>();
        _hand         = GetComponentInParent <OVRHand>();

        if (!_handSkeleton || !_hand)
        {
            yield break;
        }

        switch (fingerToFollow)
        {
        case OVRPlugin.HandFinger.Thumb:
            _boneId = OVRSkeleton.BoneId.Hand_Thumb3;
            break;

        case OVRPlugin.HandFinger.Index:
            _boneId = OVRSkeleton.BoneId.Hand_Index3;
            break;

        case OVRPlugin.HandFinger.Middle:
            _boneId = OVRSkeleton.BoneId.Hand_Middle3;
            break;

        case OVRPlugin.HandFinger.Ring:
            _boneId = OVRSkeleton.BoneId.Hand_Ring3;
            break;

        case OVRPlugin.HandFinger.Pinky:
            _boneId = OVRSkeleton.BoneId.Hand_Pinky3;
            break;

        default:
            _boneId = OVRSkeleton.BoneId.Hand_Index3;
            break;
        }

//        var capsuleTriggers = new List<BoneCapsuleTriggerLogic>();
        var boneCapsules = HandsManager.GetCapsulesPerBone(_handSkeleton, _boneId);

//        foreach (var capsule in boneCapsules)
//        {
//            var capsuleTrigger = capsule.CapsuleRigidbody.gameObject.AddComponent<BoneCapsuleTriggerLogic>();
//            capsule.CapsuleCollider.isTrigger = true;
//            capsuleTriggers.Add(capsuleTrigger);
//        }

        if (boneCapsules.Count > 0)
        {
            _capsuleToTrack = boneCapsules[0];
        }

        _isInitialized = true;
    }
 private void Awake()
 {
     if (HandsManager.instance != null)
     {
         Destroy(gameObject);
     }
     instance = this;
 }
Example #4
0
 private void Awake()
 {
     if (_instance != null && _instance != this)
     {
         Destroy(this.gameObject);
     }
     else
     {
         _instance = this;
     }
 }
    // Update is called once per frame
    void Update()
    {
        localTimer += Time.deltaTime;

        HandsManager player = GameObject.FindGameObjectWithTag("Player").GetComponent <HandsManager>();

        Vector3 leftPos  = Vector3.zero;
        Vector3 rightPos = Vector3.zero;

        if (player.leftHand.activeSelf)
        {
            leftPos = player.leftHand.transform.position;
        }
        if (player.rightHand.activeSelf)
        {
            rightPos = player.rightHand.transform.position;
        }

        if (player.leftHand.activeSelf && Vector3.Distance(transform.position, leftPos) < reactionDist)
        {
            Vector3 leftVel = (leftPos - oldLeftPos) / Time.deltaTime;
            //Debug.Log(leftVel);
            if (Vector3.Dot(leftVel, transform.forward) < 0 && !animPlaying)
            {
                StartCoroutine(PlayAnimation("leftDodge"));
                ResetTimer();
            }
        }

        if (player.rightHand.activeSelf && Vector3.Distance(transform.position, rightPos) < reactionDist && !animPlaying)
        {
            Vector3 rightVel = (rightPos - oldRightPos) / Time.deltaTime;
            //Debug.Log(rightVel);
            if (Vector3.Dot(rightVel, transform.forward) < 0)
            {
                StartCoroutine(PlayAnimation("rightDodge"));
                ResetTimer();
            }
        }

        Vector3 playerPos = Camera.main.transform.position - new Vector3(0, 0.2f, 0);

        if (Vector3.Distance(transform.position, playerPos) < reactionDist && localTimer > idleTime && randPunchCoroutine == null)
        {
            randPunchCoroutine = StartCoroutine(RandomPunch());
        }

        oldLeftPos  = leftPos;
        oldRightPos = rightPos;
    }
Example #6
0
    void FindReferences()
    {
        if (handsManager == null)
        {
            handsManager = GameObject.FindObjectOfType <HandsManager>();
        }

        if (leftHandAnchor != null && rightHandAnchor != null && leftHand != null && rightHand != null)
        {
            return;
        }
        GameObject[] all = Resources.FindObjectsOfTypeAll <GameObject>();
        foreach (GameObject o in all)
        {
            if (!o.scene.isLoaded)
            {
                continue;
            }

            if (o.name == "LeftHandAnchor")
            {
                leftHandAnchor = o.transform;
            }
            if (o.name == "RightHandAnchor")
            {
                rightHandAnchor = o.transform;
            }
            if (o.name == "OVRCustomHandPrefab_L")
            {
                originalLeftHand = o.transform;
            }
            if (o.name == "OVRCustomHandPrefab_R")
            {
                originalRightHand = o.transform;
            }
            if (o.name == "Left Hand Prefab")
            {
                leftHand = o;
            }
            if (o.name == "Right Hand Prefab")
            {
                rightHand = o;
            }
        }
    }
Example #7
0
    void LateUpdate()
    {
        timeSinceLastShot += Time.deltaTime;
        HandsManager handManager = HandsManager.Instance;

        if (handManager.NumberOfTrackedHands == 1)
        {
            if (currentHandID == null || !handManager.IsHandTracked(currentHandID.Value))
            {
                currentHandID = handManager.GetBestHand();
            }
            //Logger.Log("1 hand tracking", this);

            sphereRef.SetActive(true);

            sphereRef.transform.position = handManager.GetHandLocation(currentHandID.Value);

            if (GestureManager.Instance.TapEvent)
            {
                LaunchBall(sphereRef.transform.position);
            }
        }
        else if (handManager.NumberOfTrackedHands == 2)
        {
            //Logger.Log("2 hands tracking", this);
            if (toggle)
            {
                toggle = false;
                SpatialMappingManager.Instance.DrawVisualMeshes ^= SpatialMappingManager.Instance.DrawVisualMeshes;
            }
        }
        else
        {
            //Logger.Log("Not tracking", this);
            toggle = true;
        }

        if (timeSinceLastShot < .5f)
        {
            sphereRef.SetActive(false);
        }
    }
Example #8
0
        // Use this for initialization
        void Awake()
        {
            //get the gaze manager.
            GazeManager.Update();

            //setup the voice manager.
            // VoiceManager.Init();

            //setup the hands manager.
            HandsManager.Init();

            //Setup spatial mapping.
            MappingManager.Init(this.gameObject);
            MappingManager.DrawMaterial   = WireframeMaterial;
            MappingManager.MappingSize    = SpatialMappingSize;
            MappingManager.MappingSpeed   = SpatialMappingSpeed;
            MappingManager.LevelOfDetail  = MappingLOD;
            MappingManager.Visualize      = VisualizeMap;
            MappingManager.MappingEnabled = MappingEnabled;
        }
Example #9
0
 protected override void Start()
 {
     base.Start();
     hand = GetComponent <HandsManager>();
 }