/// <summary> /// Frees resources used by the InteractivityManager. /// </summary> public static void Dispose() { InteractivityManager interactivityManager = InteractivityManager.SingletonInstance; if (interactivityManager != null) { interactivityManager.OnInteractivityStateChanged -= HandleInteractivityStateChangedInternal; #if !UNITY_WSA && !UNITY_EDITOR // Run initialization in another thread. backgroundWorker.DoWork -= BackgroundWorkerDoWork; #endif } if (queuedEvents != null) { queuedEvents.Clear(); } previousRunInBackgroundValue = true; pendingGoInteractive = false; outstandingSetDefaultSceneRequest = string.Empty; if (outstandingCreateGroupsRequests != null) { outstandingCreateGroupsRequests.Clear(); } outstandingRequestsCompleted = false; lastCheckForOutstandingRequestsTime = -1; processedSerializedProperties = false; hasFiredGoInteractiveEvent = false; interactivityManager.Dispose(); }
private static void ProcessSerializedProperties() { MixerInteractiveHelper helper = MixerInteractiveHelper.SingletonInstance; InteractivityManager interactivityManager = InteractivityManager.SingletonInstance; string defaultSceneID = helper.defaultSceneID; if (helper.groupSceneMapping.Count > 0 || defaultSceneID != string.Empty) { shouldCheckForOutstandingRequests = true; } if (helper.groupSceneMapping.Count > 0) { var groupIDs = helper.groupSceneMapping.Keys; foreach (var groupID in groupIDs) { if (groupID == string.Empty) { continue; } // Supress this warning because calling the contructor // triggers the creation of a group. #pragma warning disable 0219 InteractiveGroup group; #pragma warning restore 0219 string sceneID = helper.groupSceneMapping[groupID]; if (sceneID != string.Empty) { group = new InteractiveGroup(groupID, sceneID); } else { group = new InteractiveGroup(groupID); } outstandingCreateGroupsRequests.Add(groupID); } if (defaultSceneID != string.Empty) { interactivityManager.SetCurrentScene(defaultSceneID); outstandingSetDefaultSceneRequest = defaultSceneID; } } processedSerializedProperties = true; }
private void Initialize() { if (mixerDialog == null) { mixerDialog = FindObjectOfType <MixerInteractiveDialog>(); } if (queuedEvents == null) { queuedEvents = new List <InteractiveEventArgs>(); } // Listen for interactive events bool interactivityManagerAlreadyInitialized = false; if (interactivityManager == null) { interactivityManager = InteractivityManager.SingletonInstance; interactivityManager.OnError -= HandleError; interactivityManager.OnInteractivityStateChanged -= HandleInteractivityStateChanged; interactivityManager.OnParticipantStateChanged -= HandleParticipantStateChanged; interactivityManager.OnInteractiveButtonEvent -= HandleInteractiveButtonEvent; interactivityManager.OnInteractiveJoystickControlEvent -= HandleInteractiveJoystickControlEvent; interactivityManager.OnInteractiveMessageEvent -= HandleInteractiveMessageEvent; interactivityManager.OnError += HandleError; interactivityManager.OnInteractivityStateChanged += HandleInteractivityStateChanged; interactivityManager.OnParticipantStateChanged += HandleParticipantStateChanged; interactivityManager.OnInteractiveButtonEvent += HandleInteractiveButtonEvent; interactivityManager.OnInteractiveJoystickControlEvent += HandleInteractiveJoystickControlEvent; interactivityManager.OnInteractiveMessageEvent += HandleInteractiveMessageEvent; } else { interactivityManagerAlreadyInitialized = true; } MixerInteractiveHelper helper = MixerInteractiveHelper.SingletonInstance; helper.runInBackgroundIfInteractive = runInBackground; helper.defaultSceneID = defaultSceneID; for (int i = 0; i < groupIDs.Count; i++) { string groupID = groupIDs[i]; if (groupID != string.Empty && !helper.groupSceneMapping.ContainsKey(groupID)) { helper.groupSceneMapping.Add(groupID, sceneIDs[i]); } } if (outstandingCreateGroupsRequests == null) { outstandingCreateGroupsRequests = new List <string>(); } outstandingSetDefaultSceneRequest = string.Empty; processedSerializedProperties = false; outstandingRequestsCompleted = false; shouldCheckForOutstandingRequests = false; lastCheckForOutstandingRequestsTime = -1; #if !UNITY_WSA backgroundWorker = new BackgroundWorker(); #endif if (interactivityManagerAlreadyInitialized && InteractivityManager.SingletonInstance.InteractivityState == InteractivityState.InteractivityEnabled) { ProcessSerializedProperties(); } }
// Start is called before the first frame update void Awake() { instance = this; _currentMode = defaultMode; }