//----------------------------------------------------------------------------------------------------------------------


        private void ShowCaptureSelectedFramesGUI(TimelineClip timelineClip, TimelineClipSISData timelineClipSISData)
        {
            bool       prevMarkersRequest = timelineClipSISData.AreFrameMarkersRequested();
            TrackAsset track = timelineClip.parentTrack;

            GUILayout.BeginHorizontal();
            bool markerVisibility = EditorGUILayout.Toggle("Show Frame Markers", prevMarkersRequest);

            if (markerVisibility != prevMarkersRequest)
            {
                timelineClipSISData.RequestFrameMarkers(markerVisibility);
            }
            GUILayout.FlexibleSpace();
            EditorGUI.BeginDisabledGroup(!markerVisibility);
            if (GUILayout.Button("Capture All", GUILayout.Width(80)))
            {
                Undo.RegisterCompleteObjectUndo(track, "RenderCachePlayableAsset: Capturing all frames");
                timelineClipSISData.SetAllPlayableFramesProperty(PlayableFramePropertyID.USED, true);
            }
            if (GUILayout.Button("Reset", GUILayout.Width(50)))
            {
                Undo.RegisterCompleteObjectUndo(track, "RenderCachePlayableAsset: Capturing no frame");
                timelineClipSISData.SetAllPlayableFramesProperty(PlayableFramePropertyID.USED, false);
            }
            EditorGUI.EndDisabledGroup();
            GUILayout.EndHorizontal();
        }
//----------------------------------------------------------------------------------------------------------------------


        private void ShowLockFramesGUI(TimelineClip timelineClip, TimelineClipSISData timelineClipSISData)
        {
            TrackAsset track = timelineClip.parentTrack;

            using (new EditorGUILayout.HorizontalScope()) {
                EditorGUILayout.PrefixLabel("Lock Frames");

                bool lockMode = GUILayout.Toggle(m_lockMode, EditorTextures.GetLockTexture(), "Button",
                                                 GUILayout.Height(20f), GUILayout.Width(30f));
                if (lockMode != m_lockMode) //lock state changed
                {
                    if (lockMode)
                    {
                        LockSISData(timelineClipSISData);
                    }
                    else
                    {
                        UnlockSISData();
                    }
                }

                GUILayout.FlexibleSpace();
                EditorGUI.BeginDisabledGroup(!m_lockMode);
                if (GUILayout.Button("Lock All", GUILayout.Width(80)))
                {
                    Undo.RegisterCompleteObjectUndo(track, "RenderCachePlayableAsset: Locking all frames");
                    timelineClipSISData.SetAllPlayableFramesProperty(PlayableFramePropertyID.LOCKED, true);
                }
                if (GUILayout.Button("Reset", GUILayout.Width(50)))
                {
                    Undo.RegisterCompleteObjectUndo(track, "RenderCachePlayableAsset: Locking no frame");
                    timelineClipSISData.SetAllPlayableFramesProperty(PlayableFramePropertyID.LOCKED, false);
                }
                EditorGUI.EndDisabledGroup();
            }
        }