Exemplo n.º 1
0
    /// <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();
    }
Exemplo n.º 2
0
    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;
    }
Exemplo n.º 3
0
    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();
        }
    }
Exemplo n.º 4
0
 // Start is called before the first frame update
 void Awake()
 {
     instance     = this;
     _currentMode = defaultMode;
 }