public void SpawnChildren(PatternElement prefab, PatternObject pattern) { System.Action <Vector2> spawnChildDelegate = x => { PatternElement instance = Instantiate(prefab); instance.transform.position = Utility.ScaleToOrthographicVector(x); instance.AssignStartingPosition(x); instance.name = $"Pattern ({pattern.Elements.Count})"; pattern.AddElement(instance); }; DoSpawnChildren(spawnChildDelegate); }
// Use this for initialization void Start() { var n = transform.childCount; Objects = new PatternObject[n]; for (var i = 0; i < n; i++) { var child = transform.GetChild(i); Objects[i] = new PatternObject { Type = ObjectType.Cube, Position = child.transform.localPosition, Rotation = child.transform.localRotation, Scale = child.transform.localScale }; } }
private static void addTemplate(String attUpdate, ObjectType tipo, PatternObject mtipo, IDeleteVariables delVar, params string[] templs) { listaTemplates.Add(mtipo, new ObjectTemplate(attUpdate, tipo, delVar, templs)); }
private static void addTemplate(String attUpdate, ObjectType tipo, PatternObject mtipo, params string[] templs) { listaTemplates.Add(mtipo, new ObjectTemplate(attUpdate, tipo, templs)); }
internal static UpdateObject getUpdate(PatternObject tipo, PatternInstanceElement element) { string gera = element.Attributes.GetPropertyValueString(getTemplate(tipo).AttributeUpdate); UpdateObject uo = UpdateObject.CreateDefault; if (gera == TransactionElement.UpdateObjectValue.DoNotUpdate) { uo = UpdateObject.DoNotUpdate; } else if (gera == TransactionElement.UpdateObjectValue.Overwrite) { uo = UpdateObject.OverWrite; } else if (gera == TransactionElement.UpdateObjectValue.OnlyRulesEventsAndConditions) { uo = UpdateObject.OnlySource; } return uo; }
internal static ObjectTemplate getTemplate(PatternObject mtipo) { ObjectTemplate ot = null; LoadTemplate(); if (listaTemplates.ContainsKey(mtipo)) { ot = listaTemplates[mtipo]; } return ot; }
public static List <List <int> > CreateFunctions(List <string> input) { input.RemoveAt(input.Count - 1); var patternObjectQueue = new Queue <PatternObject>(); patternObjectQueue.Enqueue(new PatternObject { Input = input, Patterns = new List <List <string> >(), StartingIndex = 0 }); var matches = new List <PatternObject>(); while (patternObjectQueue.Any()) { var amount = 12; var currentObject = patternObjectQueue.Dequeue(); if (currentObject.AllPatternsFound && currentObject.Patterns.Count == 3) { matches.Add(currentObject); } else if (currentObject.Patterns.Count > 3 && !currentObject.AllPatternsFound) { continue; } while (amount >= 4 && !currentObject.AllPatternsFound) { amount -= 2; if (amount + currentObject.StartingIndex >= currentObject.Input.Count - 1) { continue; } var pattern = currentObject.Input.GetRange(currentObject.StartingIndex, amount); if (currentObject.Input.FindPattern(pattern) < 1) { continue; } var deepCopy = currentObject.Input.Select(i => i).ToList(); deepCopy.ErasePattern(pattern); var tempStartingIndex = currentObject.StartingIndex + amount; tempStartingIndex = deepCopy.FirstNotNullIndex(tempStartingIndex); var newPatternObject = new PatternObject { Input = deepCopy, StartingIndex = tempStartingIndex, Patterns = currentObject.Patterns.Select(i => i).ToList() }; newPatternObject.Patterns.Add(pattern); patternObjectQueue.Enqueue(newPatternObject); } } if (matches.Count == 0) { throw new ArgumentOutOfRangeException(); } var patternObject = matches.First(); var mainFunction = input.Select(i => i).ToList(); var functions = new List <string> { "A", "B", "C" }; var functionIt = 0; foreach (var pattern in patternObject.Patterns) { mainFunction = mainFunction.ReplacePattern(pattern, functions[functionIt]); functionIt++; } return(new List <List <int> > { mainFunction.ToASCII(), patternObject.Patterns[0].ToASCII(), patternObject.Patterns[1].ToASCII(), patternObject.Patterns[2].ToASCII() }); }
public void Initialize(PatternBehaviour behaviour, PatternObject obj) { _behaviour = behaviour; _behaviour.Pattern = obj; _behaviour.Initialize(); }