private IEnumerator TryAssignPlayer() { while (modelDataManager == null) { UnityModelDataManager[] mdms = FindObjectsOfType <UnityModelDataManager>(); foreach (UnityModelDataManager item in mdms) { if (item.userID == 0) { modelDataManager = item; //// TODO: this is just a workaround. //// vive implementation has no "UnityPharusFootTracking" //if (modelDataManager.GetComponent<UnityPharusFootTracking>() != null) { // playerNumber = modelDataManager.userID = (int)modelDataManager.GetComponent<UnityPharusFootTracking>().TrackID; //} //else if (modelDataManager.GetComponent<UnityViveTracking>() != null) { // playerNumber = modelDataManager.GetComponent<UnityViveTracking>().GetID(); //} playerNumber = modelDataManager.GetComponent <IMikaTrackedEntity>().GetID(); item.userID = ID; modelDataManager.AddProvider(headData); modelDataManager.SubscribeReceiver(this); break; } } yield return(new WaitForSeconds(0.333f)); } }
private void Start() { // init filter kalmanFilters = new SimpleKalman[4]; for (int i = 0; i < kalmanFilters.Length; i++) { kalmanFilters[i] = new SimpleKalman(); kalmanFilters[i].Q = kalmanQ; kalmanFilters[i].R = kalmanR; } orientationFilter = new SimpleKalman[2]; for (int i = 0; i < orientationFilter.Length; i++) { orientationFilter[i] = new SimpleKalman(); orientationFilter[i].Q = 0.0001; orientationFilter[i].R = 0.005; } hipHeightFilter = new SimpleKalman(); hipHeightFilter.Q = 0.0001; hipHeightFilter.R = 0.003; InitFeet(); // register data receiver becaus head rotation is needed here UnityModelDataManager mdm = GetComponent <UnityModelDataManager>(); mdm.SubscribeReceiver(this); }
private void OnDestroy() { UnityModelDataManager mdm = GetComponent <UnityModelDataManager>(); mdm.RemoveProvider(leftFootData); mdm.RemoveProvider(rightFootData); mdm.RemoveProvider(hipData); mdm.RemoveProvider(leftHandData); mdm.RemoveProvider(rightHandData); mdm.SubscribeReceiver(this); UserManager.Instance.RemoveTrackedEntity(this); }
public void AssignModelDataManager(UnityModelDataManager mdm) { // forget old manager if (modelDataManager != null) { modelDataManager.RemoveProvider(headData); modelDataManager.UnsubscribeReseiver(this); } // assign new manager modelDataManager = mdm; if (mdm == null) { return; } modelDataManager.AddProvider(headData); modelDataManager.SubscribeReceiver(this); playerNumber = modelDataManager.GetComponent <IMikaTrackedEntity>().GetID(); }
public void Initialize(Transform leftFoot, Transform rightFoot) { // init filter kalmanFilters = new SimpleKalman[4]; for (int i = 0; i < kalmanFilters.Length; i++) { kalmanFilters[i] = new SimpleKalman(); kalmanFilters[i].Q = kalmanQ; kalmanFilters[i].R = kalmanR; } orientationFilter = new SimpleKalman[2]; for (int i = 0; i < orientationFilter.Length; i++) { orientationFilter[i] = new SimpleKalman(); orientationFilter[i].Q = 0.0001; orientationFilter[i].R = 0.005; } hipHeightFilter = new SimpleKalman(); hipHeightFilter.Q = 0.0001; hipHeightFilter.R = 0.003; viveLeftFoot = leftFoot; //GameObject.FindGameObjectWithTag("ViveTracker01").transform; viveRightFoot = rightFoot; //GameObject.FindGameObjectWithTag("ViveTracker02").transform; //if (useHandTracking) { // viveLeftHand = GameObject.FindGameObjectWithTag("ViveController01").transform; // viveRightHand = GameObject.FindGameObjectWithTag("ViveController02").transform; //} InitFeet(); // register data receiver becaus head rotation is needed here UnityModelDataManager mdm = GetComponent <UnityModelDataManager>(); mdm.SubscribeReceiver(this); //mdm.userID = ID; UserManager.Instance.AddTrackedEntity(this); }