Beispiel #1
0
        private void RefreshKochStartGeneration()
        {
            foreach (Transform child in _startGenerationList.transform)
            {
                Destroy(child.gameObject);
            }

            _generationItems.Clear();
            for (int i = 0; i < _lineModel.KochLineProperty.ListStartGeneration.Count; i++)
            {
                StartGen            startGen            = _lineModel.KochLineProperty.ListStartGeneration[i];
                StartGenerationItem startGenerationItem =
                    Instantiate(_startGenerationItem, _startGenerationList.transform, false);
                startGenerationItem.Initialize("Element " + i, startGen.Guid, OnDeleteStartGen, OnUpdateStartGen);
                startGenerationItem.SetOutwards(startGen.Outwards);
                startGenerationItem.SetScale(startGen.Scale);
                _generationItems.Add(startGenerationItem);
            }
        }
Beispiel #2
0
        private void OnUpdateStartGen(StartGenerationItem startGenerationItem)
        {
            LineModel newLineModel = _lineModel.DeepCopy();

            int             index     = newLineModel.KochLineProperty.ListStartGeneration.FindIndex(t => t.Guid == startGenerationItem.Guid);
            List <StartGen> startGens = new List <StartGen>();

            startGens.AddRange(newLineModel.KochLineProperty.ListStartGeneration);

            StartGen startGen = startGens[index].DeepCopy();

            startGen.Outwards = startGenerationItem.IsOutwards;
            startGen.Scale    = startGenerationItem.Scale;

            startGens[index] = startGen;
            newLineModel.KochLineProperty.ListStartGeneration = startGens;
            UpdateLineModel(newLineModel);
            UpdateLineSignal.Dispatch(newLineModel);
        }
Beispiel #3
0
        private void OnDeleteStartGen(StartGenerationItem startGenerationItem)
        {
            if (_generationItems.Count > 1)
            {
                LineModel       newLineModel = _lineModel.DeepCopy();
                List <StartGen> startGens    = new List <StartGen>();
                startGens.AddRange(newLineModel.KochLineProperty.ListStartGeneration);
                startGens.RemoveAll(t => t.Guid == startGenerationItem.Guid);
                _generationItems.RemoveAll(t => t.Guid == startGenerationItem.Guid);
                Destroy(startGenerationItem.gameObject);
                for (int i = 0; i < _generationItems.Count; i++)
                {
                    StartGenerationItem item = _generationItems[i];
                    item.SetTitle("Element " + i);
                }

                LayoutRebuilder.ForceRebuildLayoutImmediate(_verticalLayoutGroup.GetComponent <RectTransform>());
                newLineModel.KochLineProperty.ListStartGeneration = startGens;
                UpdateLineModel(newLineModel);
                UpdateLineSignal.Dispatch(newLineModel);
            }
        }
Beispiel #4
0
        private void OnAddElementClicked()
        {
            LineModel newLineModel = _lineModel.DeepCopy();

            StartGenerationItem startGenerationItem =
                Instantiate(_startGenerationItem, _startGenerationList.transform, false);
            string guid = Guid.NewGuid().ToString("N");

            startGenerationItem.Initialize("Element " + _generationItems.Count, guid, OnDeleteStartGen, OnUpdateStartGen);
            _generationItems.Add(startGenerationItem);
            List <StartGen> startGens = new List <StartGen>();

            startGens.AddRange(newLineModel.KochLineProperty.ListStartGeneration);
            startGens.Add(new StartGen()
            {
                Outwards = false, Scale = 1, Guid = guid
            });
            newLineModel.KochLineProperty.ListStartGeneration = startGens;
            UpdateLineModel(newLineModel);
            LayoutRebuilder.ForceRebuildLayoutImmediate(_verticalLayoutGroup.GetComponent <RectTransform>());
            UpdateLineSignal.Dispatch(newLineModel);
        }