public static void Deserialize(this Template template) { template.Clear(); var tplJs = new JSONObject(template.JSON); // Discard templates without the Operators and Connections fields if (tplJs.HasField("Operators") && tplJs.HasField("Connections")) { var opsJs = tplJs.GetField("Operators"); var connsJs = tplJs.GetField("Connections"); foreach (var opJs in opsJs.list) { var type = System.Type.GetType(opJs["Type"].str); var op = (Operator) System.Activator.CreateInstance(type); op.Deserialize(opJs); template.AddOperator(op, false); } foreach (var connJs in connsJs.list) { // Discard connections with invalid Operator GUIDs if (!template.Operators.ContainsKey(connJs["From"].str) || !template.Operators.ContainsKey(connJs["To"].str)) { Debug.LogWarning("Discarding connection in template due to an invalid Operator GUID"); continue; } Operator fromOp = template.Operators[connJs["From"].str]; IOOutlet output = fromOp.GetOutput(connJs["Output"].str); Operator toOp = template.Operators[connJs["To"].str]; IOOutlet input = toOp.GetInput(connJs["Input"].str); template.Connect(fromOp, output, toOp, input, false); } } }
public static QueryProperty Mod(this QueryProperty property, int num, int denom) { var expression = string.Format("[{0},{1}]", num, denom); property.AddOperator(new QueryOperator("$mod", expression)); return property; }
public static QueryProperty Size(this QueryProperty property, int size) { property.AddOperator(new QueryOperator("$size", size.ToString())); return property; }