Пример #1
0
    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);
    }
Пример #2
0
        // 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
                };
            }
        }
Пример #3
0
 private static void addTemplate(String attUpdate, ObjectType tipo, PatternObject mtipo, IDeleteVariables delVar, params string[] templs)
 {
     listaTemplates.Add(mtipo, new ObjectTemplate(attUpdate, tipo, delVar, templs));
 }
Пример #4
0
 private static void addTemplate(String attUpdate, ObjectType tipo, PatternObject mtipo, params string[] templs)
 {
     listaTemplates.Add(mtipo, new ObjectTemplate(attUpdate, tipo, templs));
 }
Пример #5
0
 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;
 }
Пример #6
0
 internal static ObjectTemplate getTemplate(PatternObject mtipo)
 {
     ObjectTemplate ot = null;
     LoadTemplate();
     if (listaTemplates.ContainsKey(mtipo))
     {
         ot = listaTemplates[mtipo];
     }
     return ot;
 }
Пример #7
0
        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();
 }