void CinemaAudioControl_AlterFixedAction(object sender, ActionFixedItemEventArgs e)
    {
        CinemaAudioFragment audioItem = e.actionItem as CinemaAudioFragment;

        if (audioItem == null)
        {
            return;
        }

        if (e.duration <= 0)
        {
            deleteItem(audioItem);
        }
        else
        {
            Undo.RecordObject(e.actionItem, string.Format("Change {0}", audioItem.name));
            audioItem.Firetime = e.firetime;
            audioItem.Duration = e.duration;
            audioItem.InTime   = e.inTime;
            audioItem.OutTime  = e.outTime;
        }
    }
    public override void Draw(DirectorControlState state)
    {
        CinemaAudioFragment audioItem = Wrapper.Behaviour as CinemaAudioFragment;

        if (audioItem == null)
        {
            return;
        }
        AudioSource audioSource = audioItem.GetComponent <AudioSource>();

        if (!TrackControl.isExpanded)
        {
            if (Selection.Contains(audioItem.gameObject))
            {
                GUI.Box(controlPosition, string.Empty, TimelineTrackControl.styles.AudioTrackItemSelectedStyle);
            }
            else
            {
                GUI.Box(controlPosition, string.Empty, TimelineTrackControl.styles.AudioTrackItemStyle);
            }
            Color temp = GUI.color;
            GUI.color = new Color(1f, 0.65f, 0f);
            Rect icon = controlPosition;
            icon.x     += 4;
            icon.width  = 16;
            icon.height = 16;
            GUI.Box(icon, actionIcon, GUIStyle.none);
            GUI.color = temp;

            Rect labelPosition = controlPosition;
            labelPosition.x      = icon.xMax;
            labelPosition.width -= (icon.width + 4);


            DrawRenameLabel(audioItem.name, labelPosition);
        }
        else
        {
            if (Selection.Contains(audioItem.gameObject))
            {
                GUI.Box(controlPosition, string.Empty, TimelineTrackControl.styles.TrackItemSelectedStyle);
            }
            else
            {
                GUI.Box(controlPosition, string.Empty, TimelineTrackControl.styles.TrackItemStyle);
            }
            if (audioSource != null && audioSource.clip != null)
            {
                GUILayout.BeginArea(controlPosition);
                if (texture == null || audioItemName != audioSource.clip.name)
                {
                    audioItemName = audioSource.clip.name;
                    texture       = AssetPreview.GetAssetPreview(audioSource.clip);
                }

                float inTimeOffset    = (audioItem.InTime) * state.Scale.x;
                float outTimeOffset   = (audioItem.ItemLength - audioItem.OutTime) * state.Scale.x;
                Rect  texturePosition = new Rect(-inTimeOffset + 2, 0, controlPosition.width - 4 + inTimeOffset + outTimeOffset, controlPosition.height);

                if (texture != null)
                {
                    GUI.DrawTexture(texturePosition, texture, ScaleMode.StretchToFill);
                }
                GUILayout.EndArea();
            }
        }
    }