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)); } }
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(); }