public override void ExposeData() { if (_isDeactivating) { return; } base.ExposeData(); if (Scribe.mode == LoadSaveMode.LoadingVars) { Instance = this; InitVoids(); } var version = CurrentVersion; Scribe_Values.Look(ref version, "version"); if (Scribe.mode == LoadSaveMode.Saving) { _savedPresets.Clear(); _savedDefaults.Clear(); _savedBindings.Clear(); foreach (var classType in _presets.Values) { foreach (var type in classType.Values) { _savedPresets.AddRange(type.Values.ToArray()); } } _savedDefaults.AddRange(_defaults.Values.Where(preset => !preset.IsVoid).Select(preset => new Binding(preset.Type, preset)).ToArray()); _savedBindings.AddRange(_rules.Where(rules => rules.Key.CanHaveRules()).Select(rules => new Binding(rules.Key, rules.Value.IsIgnored() ? null : rules.Value)).ToArray()); } Scribe_Collections.Look(ref _savedPresets, "presets", LookMode.Deep); Scribe_Collections.Look(ref _savedBindings, "bindings", LookMode.Deep); Scribe_Collections.Look(ref _savedDefaults, "defaults", LookMode.Deep); if (Scribe.mode != LoadSaveMode.PostLoadInit) { return; } _presets.Clear(); _defaults.Clear(); _rules.Clear(); foreach (var preset in _savedPresets) { AddPreset(preset); } foreach (var preset in _savedDefaults) { _defaults.Add(preset.Target, preset.Rules); } InitDefaults(); foreach (var binding in _savedBindings.Where(binding => binding.Pawn.CanHaveRules())) { _rules.Add(binding.Pawn, binding.Rules); } _savedPresets.Clear(); _savedDefaults.Clear(); _savedBindings.Clear(); Presetable.ResetIds(); }