/// <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; }