//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ private void UpdateTickList() { if (SegmentInfo == null || SegmentInfo.TickInfoList == null) { return; } int newTickCount = SegmentInfo.TickInfoList.Count; if (Ticks.Count == newTickCount) { return; } #if UNITY_EDITOR //ticks are often added within a prefab; this forces serialization of the "Ticks" list UnityEditor.EditorUtility.SetDirty(this); #endif if (TickPrefab == null) { Debug.LogWarning("Cannot build ticks without a prefab reference.", this); return; } while (Ticks.Count < newTickCount) { HoverMesh tickMesh = RendererUtil.TryBuildPrefabRenderer <HoverMesh>(TickPrefab); tickMesh.name = "Tick" + Ticks.Count; tickMesh.transform.SetParent(gameObject.transform, false); Ticks.Add(tickMesh); } while (Ticks.Count > newTickCount) { int lastTickIndex = Ticks.Count - 1; HoverMesh tick = Ticks[lastTickIndex]; Ticks.RemoveAt(lastTickIndex); if (Application.isPlaying) { Destroy(tick.gameObject); } else { tick.gameObject.SetActive(false); tick.GetComponent <TreeUpdater>().enabled = false; DestroyImmediate(tick.gameObject); } } GetComponent <TreeUpdater>().ImmediateReloadTreeChildren(); }