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(); } }
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); }