public void LoadPreset(string path, int flags) { J.Node.SaveContext = SaveContext.CreateForPreset( Bits.IsSet(flags, Utilities.PresetUsePlaceholder)); var node = J.Node.Wrap(SuperController.singleton.LoadJSON(path)); if (Bits.IsSet(flags, Utilities.FullPreset)) { if (Bits.IsSet(flags, Utilities.PresetReplace)) { FromJSON(node); } else if (Bits.IsSet(flags, Utilities.PresetAppend)) { var m = new Manager(); m.FromJSON(node); foreach (var s in m.Steps) { AddStep(s); } } } else if (Bits.IsSet(flags, Utilities.StepPreset)) { if (Bits.IsSet(flags, Utilities.PresetReplace)) { var s = Synergy.Instance.UI.CurrentStep; if (s == null) { Synergy.LogError("no current step"); return; } s.FromJSON(node); s.Reset(); } else if (Bits.IsSet(flags, Utilities.PresetAppend)) { var s = new Step(); s.FromJSON(node); AddStep(s); s.Reset(); } else if (Bits.IsSet(flags, Utilities.PresetMerge)) { var s = Synergy.Instance.UI.CurrentStep; if (s == null) { Synergy.LogError("no current step"); return; } var newStep = new Step(); newStep.FromJSON(node); foreach (var m in newStep.Modifiers) { s.AddModifier(m); } newStep.RelinquishModifiers(); s.Reset(); } } else if (Bits.IsSet(flags, Utilities.ModifierPreset)) { if (Bits.IsSet(flags, Utilities.PresetReplace)) { var m = Synergy.Instance.UI.CurrentModifier; if (m == null) { Synergy.LogError("no current modifier"); return; } m.FromJSON(node); } else if (Bits.IsSet(flags, Utilities.PresetAppend)) { var s = Synergy.Instance.UI.CurrentStep; if (s == null) { Synergy.LogError("no current step"); return; } var m = new ModifierContainer(); m.FromJSON(node); s.AddModifier(m); } } J.Node.SaveContext = SaveContext.CreateForScene(); }