public IScriptItem ApplyStacks(IScriptItem item) { if (item is Defrule defrule) { defrule.Conditions.AddRange(ConditionStack.Select(x => x.Copy())); defrule.Actions.AddRange(ActionStack.Select(x => x.Copy())); } return(item); }
public void AddToScript(IScriptItem item) { if (item.GetType().IsGenericType&& item.GetType().GetGenericTypeDefinition() == typeof(Defconst <>)) { Script.Items.Insert(0, item); } else { Script.Items.Add(item); } }
public static IEnumerable <IScriptItem> ParseXml(XElement root) { if (root.Name != "modelscript") { throw new Exception("Script root node is not named \"modelscript\""); } var script = new List <IScriptItem>(); foreach (var element in root.Elements()) { if (element.Name.ToString() == "object3d") { script.Add(ParseXmlObject3d(element)); continue; } IScriptItem si = (element.Name.ToString()) switch { "createnew" => new CreateNewObjects(), "rootpoint" => new SetRootPoint(), "new" => new NewModel(), "load" => new LoadModel(), "save" => new SaveModel(), "patternuv" => new PatternUV(), "export" => new Export(), "exporttype" => new SetDefaultExportType(), "batchexport" => new BatchExport(), "dumpanims" => new DumpAnims(), "dumpskins" => new DumpSkins(), "import" => new Import(), "animate" => new Animate(), "skin" => new Skin(), "removeskin" => new RemoveSkin(), "runscript" => new RunScript(), "duplicate" => new Duplicate(), _ => throw new Exception($"Unknown command {element.Name}"), }; si.ParseXml(element); script.Add(si); } return(script); }
/// <summary> /// An item that lets you wrap objects before and/or after another item /// Useful to create effects like surrounding brackets /// </summary> /// <param name="before">object to render before the item</param> /// <param name="item">the item to render</param> /// <param name="after">object to render after the item</param> /// <returns></returns> public static ScriptWrapper Wrapper(object before, IScriptItem item, object after) { return new ScriptWrapper(before, item, after); }
/// <summary> /// An item that lets you wrap objects before and/or after another item /// Useful to create effects like surrounding brackets /// </summary> /// <param name="layout">override the default layout</param> /// <param name="before">object to render before the item</param> /// <param name="item">the item to render</param> /// <param name="after">object to render after the item</param> /// <returns></returns> public static ScriptWrapper Wrapper(ScriptLayout layout, object before, IScriptItem item, object after) { return new ScriptWrapper(layout, before, item, after); }
public bool CanBeAppliedTo(IScriptItem scriptItem) { return(scriptItem.GetType().Name == "Defconst`1"); }
public bool CanBeAppliedTo(IScriptItem scriptItem) { return(scriptItem is Defrule); }
public Item(Model.IScriptModel scriptModel, IScriptItem scriptObject) : base(scriptModel, scriptObject) { }
public bool CanBeAppliedTo(IScriptItem scriptItem) { return(scriptItem is Condition || scriptItem is CombinatoryCondition); }