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); } }
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); }
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); } }
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); }