/// <summary>Unsubscribe previous frame solo subscriptions.</summary>
        private void UnsubscribeSoloSubscriptions()
        {
            if (m_useSolo && m_hasSolo)
            {
                //Unsubscribe previous solo subscriptions from LocalNoticeBoards
                foreach (KeyValuePair <string, ActiveSubscription>
                         subscription in m_prevSoloActiveSubscriptions)
                {
                    if (subscription.Value.m_noticeBoard)
                    {
                        subscription.Value.m_noticeBoard.UnsubscribeToMessage(
                            subscription.Value.m_dynamicMessageHeader,
                            subscription.Value.m_subscriberFunction,
                            OnRemoveSubscriberList);

                        //Creates LocalNoticeBoard unsubscription package
                        MPac_UnsubscribedLocalMessage package = new MPac_UnsubscribedLocalMessage(
                            subscription.Value.m_dynamicMessageHeader,
                            "Local Message: " + subscription.Value.m_dynamicMessageHeader
                            + " ~Unsubscribed", subscription.Value.m_dynamicMessageHeader);
                        subscription.Value.m_unsubscribeFunction?.Invoke(package);
                    }
                    else
                    {
                        GlobalNoticeBoard.s_instance.UnsubscribeToMessage(
                            subscription.Value.m_staticMessageHeader,
                            subscription.Value.m_subscriberFunction);


                        //Creates GlobalNoticeBoard unsubscription package
                        MPac_UnsubscribedGlobalMessage package = new MPac_UnsubscribedGlobalMessage(
                            subscription.Value.m_staticMessageHeader,
                            "Global Message: " + subscription.Value.m_staticMessageHeader.ToString()
                            + " ~Unsubscribed", subscription.Value.m_staticMessageHeader.ToString());
                        subscription.Value.m_unsubscribeFunction?.Invoke(package);
                    }
                }
                m_prevSoloActiveSubscriptions.Clear();

                //Transfer current buffer to previous buffer
                foreach (KeyValuePair <string, ActiveSubscription>
                         subscription in m_soloActiveSubscriptions)
                {
                    m_prevSoloActiveSubscriptions.Add(subscription.Key, subscription.Value);
                }
                m_soloActiveSubscriptions.Clear();

                if (m_prevSoloActiveSubscriptions.Count == 0)
                {
                    m_hasSolo = false;
                }
            }
        }
        /// <summary>Unsubscribe from global subscription.</summary>
        private void UnsubscribeGlobalMessage(MessageHeader _messageHeader, Interest _interest)
        {
            string subscriptionKey = _messageHeader.ToString() + " ~ " + _interest.m_messageFunction.Method;

            GlobalNoticeBoard.s_instance.UnsubscribeToMessage(_messageHeader, _interest.m_messageFunction);

            //If UnsubscribeFunction, send unsub package
            MPac_UnsubscribedGlobalMessage package = new MPac_UnsubscribedGlobalMessage(
                _messageHeader, "Global Message: " + _messageHeader.ToString() + " ~Unsubscribed",
                _messageHeader.ToString());

            _interest.m_unsubscribeFunction?.Invoke(package);


            //Removes active subscription to relevant list
            switch (_interest.m_persistence)
            {
            case SubscriptionPersistence.Endless:
            {
                m_endlessActiveSubscriptions.Remove(subscriptionKey);
                break;
            }

            case SubscriptionPersistence.SingleUse:
            {
                m_singleActiveSubscriptions.Remove(subscriptionKey);
                break;
            }

            case SubscriptionPersistence.SoloFrame:
            {
                m_soloActiveSubscriptions.Remove(subscriptionKey);
                m_prevSoloActiveSubscriptions.Remove(subscriptionKey);
                m_hasSolo = true;
                break;
            }

            default:
            {
                break;
            }
            }
        }