Beispiel #1
0
        void ResolveProfileParentReference(ShortcutProfile profile)
        {
            if (string.IsNullOrEmpty(profile.parentId))
            {
                return;
            }

            if (m_LoadedProfiles.ContainsKey(profile.parentId))
            {
                profile.parent = m_LoadedProfiles[profile.parentId];
            }
            else
            {
                Debug.LogWarning($"Shortcut profile with id '{profile.id}' references unknown parent profile with id '{profile.parentId}'. Breaking parent link.");
                profile.BreakParentLink();
            }
        }
Beispiel #2
0
        static void BreakProfileParentCyclicDependency(ShortcutProfile profile)
        {
            if (profile.parent == null)
            {
                return;
            }

            var seenProfiles = new List <ShortcutProfile>();

            do
            {
                seenProfiles.Add(profile);

                if (seenProfiles.Contains(profile.parent))
                {
                    Debug.LogWarning($"Cyclic dependency between shortcut profiles found! Breaking parent link at '{profile.id}'.");
                    profile.BreakParentLink();
                    return;
                }

                profile = profile.parent;
            }while (profile.parent != null);
        }