internal void RemovePart([NotNull] CharacterPart part) { if (parts.Remove(part)) { foreach (var(type, _) in TypeCacher.type2ProvidedTypes[part.GetType()]) { traitManager[type].RemoveProvider(part); } } }
internal void AddPart([NotNull] CharacterPart part) { if (parts.Contains(part)) { return; } parts.Add(part); foreach (var(type, provider) in TypeCacher.type2ProvidedTypes[part.GetType()]) { traitManager[type].AddProvider(part, provider.Substitute(part)); } }