public void TryAutomaticGrowingSettings() { Hirarchy hirarchy = GetHirarchy(transform); while (true) { List <GrowingPart> currentGrowingParts = hirarchy.NextParts(); for (int index = 0; index < currentGrowingParts.Count; index++) { var currentPart = currentGrowingParts[index]; currentPart.currentBaseStateIndex = StateOrder.Count; currentPart.UpdateMinMaxTime(this); currentPart.startTime = currentPart.minTime + hirarchy.CurrentProzent * (currentPart.maxTime - currentPart.minTime); currentPart.endTime = currentPart.startTime + hirarchy.ProzentPerPart * (currentPart.maxTime - currentPart.minTime); #if UNITY_EDITOR EditorUtility.SetDirty(currentPart); #endif } if (hirarchy.IsLast) { break; } } }
public Hirarchy GetHirarchy(Transform trans) { Hirarchy hirarchy = new Hirarchy(); AddPartsForLevel(trans, hirarchy, 0); return(hirarchy); }
public void AddPartsForLevel(Transform searchTransform, Hirarchy hirarchy, int index) { int nextIndex = index; foreach (Transform childTransform in searchTransform) { if (childTransform.GetComponent <GrowingPart>()) { if (nextIndex == index) { nextIndex++; } hirarchy.AddPart(childTransform.GetComponent <GrowingPart>(), index); } AddPartsForLevel(childTransform, hirarchy, nextIndex); } }