Example #1
0
        /// <summary>
        ///     Executes this method when the (anything) is loaded.
        /// </summary>
        private void ExecuteWhenLoaded()
        {
            if (DEBUG)
            {
                Debug.Log(
                    "Before sorting:" +
                    Environment.NewLine +
                    string.Join(Environment.NewLine, m_actions.Keys.Select((k, i) => $"{Substring(k, 15)} -- {i}")));
            }

            // Order everything depending on its depth (lower values first, because we need that higher ones (-1 or 0) draw last)
            var orderedExtenders = m_extenders.OrderByDescending(ext => ext.Value.Depth)
                                   .ToDictionary(t => t.Key, t => t.Value);

            if (DEBUG)
            {
                Debug.Log($"Are equal?: {DictionaryHelper.AreEqual(orderedExtenders, m_extenders)}");
            }

            m_extenders = orderedExtenders;

            // Sort actions based on ordered extenders
            var tempActions = new Dictionary <string, Action <object[]> >();
            var debugList   = new List <int>();

            m_extenders.ForEach(ext =>
            {
                tempActions.Add(ext.Key, m_actions[ext.Key]);

                if (DEBUG)
                {
                    debugList.Add(m_actions.IndexOfKey(ext.Key));
                }
            });
            m_actions = tempActions; // Will this cause problems?

            if (DEBUG)
            {
                Debug.Log(
                    "After sorting:" +
                    Environment.NewLine +
                    string.Join(Environment.NewLine,
                                m_actions.Keys.Select((k, i) => $"{Substring(k, 15)} -- {debugList[i]}")));
            }

            m_isReady = true;
        }