private void Update()
        {
            if (Invalidate)
            {
                _supportRegnerateTime = Time.time;
            }

            if (Invalidate && Time.time - _meshGenerationTime > .05f)
            {
                _isSupportsInvalid = true;

                ResetMeshForTrackSegment(TrackSegment);
                TrackSegment.generateMesh(TrackEditHandler.Instance.TrackRide.meshGenerator);
                GenerateHeightMarkerTrack(TrackSegment);

                _meshGenerationTime = Time.time;
                Invalidate          = false;
            }

            if (_isSupportsInvalid && Time.time - _supportRegnerateTime > .1f)
            {
                for (var x = 0; x < 5; x++)
                {
                    ResetMeshForTrackSegment(TrackSegment);
                    var localCrossTile = typeof(TrackSegment4).GetField("localCrossedTiles",
                                                                        BindingFlags.GetField | BindingFlags.Instance | BindingFlags.NonPublic);
                    if (localCrossTile != null)
                    {
                        localCrossTile.SetValue(TrackSegment, null);
                    }

                    TrackSegment.generateMesh(TrackEditHandler.Instance.TrackRide.meshGenerator);
                }

                _isSupportsInvalid = false;
            }

            foreach (var curves in GetTrackCurves)
            {
                curves.Update();
            }
        }