Example #1
0
        /// <summary>
        /// Update the track and play any newly triggered items.
        /// </summary>
        /// <param name="time">The new running time.</param>
        /// <param name="deltaTime">The deltaTime since the last update call.</param>
        public override void UpdateTrack(float time, float deltaTime)
        {
            float elapsedTime = base.elapsedTime;

            base.elapsedTime = time;

            TimelineItem[] items = GetTimelineItems();
            for (int i = 0; i < items.Length; i++)
            {
                CinemaAudio cinemaAudio = items[i] as CinemaAudio;
                if (cinemaAudio != null)
                {
                    if (((elapsedTime < cinemaAudio.Firetime) || (elapsedTime <= 0f)) && (((base.elapsedTime >= cinemaAudio.Firetime))))
                    {
                        cinemaAudio.Trigger();
                    }
                    if ((base.elapsedTime > cinemaAudio.Firetime) && (base.elapsedTime <= (cinemaAudio.Firetime + cinemaAudio.Duration)))
                    {
                        float audioTime = time - cinemaAudio.Firetime;
                        cinemaAudio.UpdateTime(audioTime, deltaTime);
                    }
                    if (((elapsedTime <= (cinemaAudio.Firetime + cinemaAudio.Duration)) && (base.elapsedTime > (cinemaAudio.Firetime + cinemaAudio.Duration))))
                    {
                        cinemaAudio.End();
                    }
                }
            }
        }
Example #2
0
    /// <summary>
    /// Update and Draw the inspector
    /// </summary>
    public override void OnInspectorGUI()
    {
        cinemaAudio.Update();

        CinemaAudio audio       = (target as CinemaAudio);
        AudioSource audioSource = audio.gameObject.GetComponent <AudioSource>();

        EditorGUILayout.PropertyField(firetime);
        EditorGUILayout.PropertyField(duration);
        EditorGUILayout.PropertyField(inTime);
        EditorGUILayout.PropertyField(outTime);

        if (audioSource == null || audioSource.clip == null)
        {
            EditorGUILayout.HelpBox(ERROR_MSG, MessageType.Error);
        }

        AudioClip audioClip = audioSource.clip;

        if (audioClip.length != itemLength.floatValue)
        {
            itemLength.floatValue = audioClip.length;
            outTime.floatValue    = Mathf.Min(outTime.floatValue, itemLength.floatValue);
            duration.floatValue   = outTime.floatValue - inTime.floatValue;
        }

        cinemaAudio.ApplyModifiedProperties();
    }
Example #3
0
        /// <summary>
        /// Update the track and play any newly triggered items.
        /// </summary>
        /// <param name="time">The new running time.</param>
        /// <param name="deltaTime">The deltaTime since the last update call.</param>
        public override void UpdateTrack(float time, float deltaTime)
        {
            float elapsedTime = base.elapsedTime;

            base.elapsedTime = time;
            {
                var __array3       = GetTimelineItems();
                var __arrayLength3 = __array3.Length;
                for (int __i3 = 0; __i3 < __arrayLength3; ++__i3)
                {
                    var item = (TimelineItem)__array3[__i3];
                    {
                        CinemaAudio cinemaAudio = item as CinemaAudio;
                        if (cinemaAudio != null)
                        {
                            if (((elapsedTime < cinemaAudio.Firetime) || (elapsedTime <= 0f)) && (((base.elapsedTime >= cinemaAudio.Firetime))))
                            {
                                cinemaAudio.Trigger();
                            }
                            if ((base.elapsedTime > cinemaAudio.Firetime) && (base.elapsedTime <= (cinemaAudio.Firetime + cinemaAudio.Duration)))
                            {
                                float audioTime = time - cinemaAudio.Firetime;
                                cinemaAudio.UpdateTime(audioTime, deltaTime);
                            }
                            if (((elapsedTime <= (cinemaAudio.Firetime + cinemaAudio.Duration)) && (base.elapsedTime > (cinemaAudio.Firetime + cinemaAudio.Duration))))
                            {
                                cinemaAudio.End();
                            }
                        }
                    }
                }
            }
        }
Example #4
0
 /// <summary>
 /// Pause all Audio Clips that are currently playing.
 /// </summary>
 public override void Pause()
 {
     foreach (TimelineItem item in GetTimelineItems())
     {
         CinemaAudio cinemaAudio = item as CinemaAudio;
         if (cinemaAudio != null)
         {
             cinemaAudio.Pause();
         }
     }
 }
Example #5
0
 public void OnEnable()
 {
     cinemaAudio = new SerializedObject(target);
     m_Target    = target as CinemaAudio;
     firetime    = cinemaAudio.FindProperty("firetime");
     duration    = cinemaAudio.FindProperty("duration");
     inTime      = cinemaAudio.FindProperty("inTime");
     outTime     = cinemaAudio.FindProperty("outTime");
     itemLength  = cinemaAudio.FindProperty("itemLength");
     m_Path      = cinemaAudio.FindProperty("m_Path");
 }
Example #6
0
 /// <summary>
 /// Set the track to an arbitrary time.
 /// </summary>
 /// <param name="time">The new time.</param>
 public override void SetTime(float time)
 {
     foreach (TimelineItem item in GetTimelineItems())
     {
         CinemaAudio cinemaAudio = item as CinemaAudio;
         if (cinemaAudio != null)
         {
             float audioTime = time - cinemaAudio.Firetime;
             cinemaAudio.SetTime(audioTime);
         }
     }
 }
Example #7
0
    public static void Initialize(CinemaAudio audio)
    {
        AudioSource audioSrc = audio.transform.GetOrAddComponent <AudioSource>();

        string fileName = Path.GetFileName(audio.path);

        if (audioSrc.clip == null || audioSrc.clip.name != fileName)
        {
            string path = string.Concat("Assets/Res/", audio.path);
            audioSrc.clip = AssetDatabase.LoadAssetAtPath <AudioClip>(path);
        }
    }
Example #8
0
 /// <summary>
 /// Stop playback of all playing audio items.
 /// </summary>
 public override void Stop()
 {
     base.elapsedTime = 0f;
     foreach (TimelineItem item in GetTimelineItems())
     {
         CinemaAudio cinemaAudio = item as CinemaAudio;
         if (cinemaAudio != null)
         {
             cinemaAudio.Stop();
         }
     }
 }
Example #9
0
 /// <summary>
 /// Pause all Audio Clips that are currently playing.
 /// </summary>
 public override void Pause()
 {
     TimelineItem[] items = GetTimelineItems();
     for (int i = 0; i < items.Length; i++)
     {
         CinemaAudio cinemaAudio = items[i] as CinemaAudio;
         if (cinemaAudio != null)
         {
             cinemaAudio.Pause();
         }
     }
 }
    private void handleDragInteraction(Rect position, AudioTrack track, Vector2 translation, Vector2 scale)
    {
        Rect controlBackground = new Rect(0, 0, position.width, position.height);

        switch (Event.current.type)
        {
        case EventType.DragUpdated:
            if (controlBackground.Contains(Event.current.mousePosition))
            {
                bool     audioFound = false;
                Object[] objRefs    = DragAndDrop.objectReferences;
                for (int i = 0; i < objRefs.Length; i++)
                {
                    AudioClip clip = objRefs[i] as AudioClip;
                    if (clip != null)
                    {
                        audioFound = true;
                        break;
                    }
                }
                if (audioFound)
                {
                    DragAndDrop.visualMode = DragAndDropVisualMode.Link;
                    Event.current.Use();
                }
            }
            break;

        case EventType.DragPerform:
            if (controlBackground.Contains(Event.current.mousePosition))
            {
                AudioClip clip    = null;
                Object[]  objRefs = DragAndDrop.objectReferences;
                for (int i = 0; i < objRefs.Length; i++)
                {
                    AudioClip audioClip = objRefs[i] as AudioClip;
                    if (audioClip != null)
                    {
                        clip = audioClip;
                        break;
                    }
                }
                if (clip != null)
                {
                    float       fireTime = (Event.current.mousePosition.x - translation.x) / scale.x;
                    CinemaAudio ca       = CutsceneItemFactory.CreateCinemaAudio(track, clip, fireTime);
                    Undo.RegisterCreatedObjectUndo(ca, string.Format("Created {0}", ca.name));
                    Event.current.Use();
                }
            }
            break;
        }
    }
Example #11
0
 /// <summary>
 /// Stop playback of all playing audio items.
 /// </summary>
 public override void Stop()
 {
     base.elapsedTime = 0f;
     TimelineItem[] items = GetTimelineItems();
     for (int i = 0; i < items.Length; i++)
     {
         CinemaAudio cinemaAudio = items[i] as CinemaAudio;
         if (cinemaAudio != null)
         {
             cinemaAudio.Stop();
         }
     }
 }
Example #12
0
    private void resetAudioTrackGroup(Cutscene cutscene)
    {
        AudioTrack[] audioTracks = cutscene.GetComponentsInChildren <AudioTrack>();

        foreach (AudioTrack audioGroup in audioTracks)
        {
            foreach (TimelineItem timelineItem in audioGroup.GetTimelineItems())
            {
                CinemaAudio audio = timelineItem as CinemaAudio;
                CinemaAudioInspector.Initialize(audio);
            }
        }
    }
Example #13
0
 /// <summary>
 /// Set the track to an arbitrary time.
 /// </summary>
 /// <param name="time">The new time.</param>
 public override void SetTime(float time)
 {
     TimelineItem[] items = GetTimelineItems();
     for (int i = 0; i < items.Length; i++)
     {
         CinemaAudio cinemaAudio = items[i] as CinemaAudio;
         if (cinemaAudio != null)
         {
             float audioTime = time - cinemaAudio.Firetime;
             cinemaAudio.SetTime(audioTime);
         }
     }
 }
Example #14
0
 /// <summary>
 /// Resume playing audio clips after calling a Pause.
 /// </summary>
 public override void Resume()
 {
     foreach (TimelineItem item in GetTimelineItems())
     {
         CinemaAudio cinemaAudio = item as CinemaAudio;
         if (cinemaAudio != null)
         {
             if (((base.Cutscene.RunningTime > cinemaAudio.Firetime)) && (base.Cutscene.RunningTime < (cinemaAudio.Firetime + cinemaAudio.Duration)))
             {
                 cinemaAudio.Resume();
             }
         }
     }
 }
Example #15
0
 /// <summary>
 /// Resume playing audio clips after calling a Pause.
 /// </summary>
 public override void Resume()
 {
     TimelineItem[] items = GetTimelineItems();
     for (int i = 0; i < items.Length; i++)
     {
         CinemaAudio cinemaAudio = items[i] as CinemaAudio;
         if (cinemaAudio != null)
         {
             if (((base.Cutscene.RunningTime > cinemaAudio.Firetime)) && (base.Cutscene.RunningTime < (cinemaAudio.Firetime + cinemaAudio.Duration)))
             {
                 cinemaAudio.Resume();
             }
         }
     }
 }
Example #16
0
 /// <summary>
 /// Pause all Audio Clips that are currently playing.
 /// </summary>
 public override void Pause()
 {
     {
         var __array2       = GetTimelineItems();
         var __arrayLength2 = __array2.Length;
         for (int __i2 = 0; __i2 < __arrayLength2; ++__i2)
         {
             var item = (TimelineItem)__array2[__i2];
             {
                 CinemaAudio cinemaAudio = item as CinemaAudio;
                 if (cinemaAudio != null)
                 {
                     cinemaAudio.Pause();
                 }
             }
         }
     }
 }
Example #17
0
    /// <summary>
    /// Update and Draw the inspector
    /// </summary>
    public override void OnInspectorGUI()
    {
        cinemaAudio.Update();

        CinemaAudio audio       = (target as CinemaAudio);
        AudioSource audioSource = audio.gameObject.GetComponent <AudioSource>();

        EditorGUILayout.PropertyField(firetime);
        EditorGUILayout.PropertyField(duration);
        EditorGUILayout.PropertyField(inTime);
        EditorGUILayout.PropertyField(outTime);
        EditorGUILayout.PropertyField(path);

        //        if (audioSource == null || audioSource.clip == null)
        //        {
        //            EditorGUILayout.HelpBox(ERROR_MSG, MessageType.Error);
        //        }

        if (audioSource)
        {
            AudioClip audioClip = audioSource.clip;
            if (audioClip)
            {
                if (string.IsNullOrEmpty(path.stringValue))
                {
                    string audioPath = AssetDatabase.GetAssetPath(audioClip);
                    audioPath        = audioPath.Replace("Assets/Res/", "");
                    path.stringValue = audioPath;
                }

                if (audioClip.length != itemLength.floatValue)
                {
                    itemLength.floatValue = audioClip.length;
                    outTime.floatValue    = Mathf.Min(outTime.floatValue, itemLength.floatValue);
                    duration.floatValue   = outTime.floatValue - inTime.floatValue;

                    string audioPath = AssetDatabase.GetAssetPath(audioClip);
                    audioPath        = audioPath.Replace("Assets/Res/", "");
                    path.stringValue = audioPath;
                }
            }
        }
        cinemaAudio.ApplyModifiedProperties();
    }
Example #18
0
 /// <summary>
 /// Stop playback of all playing audio items.
 /// </summary>
 public override void Stop()
 {
     base.elapsedTime = 0f;
     {
         var __array5       = GetTimelineItems();
         var __arrayLength5 = __array5.Length;
         for (int __i5 = 0; __i5 < __arrayLength5; ++__i5)
         {
             var item = (TimelineItem)__array5[__i5];
             {
                 CinemaAudio cinemaAudio = item as CinemaAudio;
                 if (cinemaAudio != null)
                 {
                     cinemaAudio.Stop();
                 }
             }
         }
     }
 }
Example #19
0
 /// <summary>
 /// Set the track to an arbitrary time.
 /// </summary>
 /// <param name="time">The new time.</param>
 public override void SetTime(float time)
 {
     {
         var __array1       = GetTimelineItems();
         var __arrayLength1 = __array1.Length;
         for (int __i1 = 0; __i1 < __arrayLength1; ++__i1)
         {
             var item = (TimelineItem)__array1[__i1];
             {
                 CinemaAudio cinemaAudio = item as CinemaAudio;
                 if (cinemaAudio != null)
                 {
                     float audioTime = time - cinemaAudio.Firetime;
                     cinemaAudio.SetTime(audioTime);
                 }
             }
         }
     }
 }
Example #20
0
    /// <summary>
    /// Export prefab to local desk
    /// </summary>
    /// <param name="cutscene"></param>
    /// <param name="path"></param>
    private void exportPrefab(Cutscene cutscene, string path)
    {
        GameObject instanceObj = GameObject.Instantiate(cutscene.gameObject);

        instanceObj.layer = LayerMask.NameToLayer("Plot");

        CinemaShot[] shotArr = instanceObj.GetComponentsInChildren <CinemaShot>();
        foreach (CinemaShot shot in shotArr)
        {
            PlotCamera plotCam = shot.shotCamera.GetComponent <PlotCamera>();
            plotCam.IsMainCamera = shot.Firetime == 0;
        }

        ActorTrackGroup[] actorGroupArr = instanceObj.GetComponentsInChildren <ActorTrackGroup>();

        foreach (ActorTrackGroup actorGroup in actorGroupArr)
        {
            Transform trackTrans = actorGroup.transform;
            clearTransform(trackTrans, "_temp");
            clearTransform(trackTrans, "_Entity", true);
        }

        //clear audio source
        AudioTrack[] audioTracks = instanceObj.GetComponentsInChildren <AudioTrack>();
        foreach (AudioTrack audioGroup in audioTracks)
        {
            foreach (TimelineItem timelineItem in audioGroup.GetTimelineItems())
            {
                CinemaAudio audio = timelineItem as CinemaAudio;
                if (audio)
                {
                    AudioSource audioSrc = audio.GetComponent <AudioSource>();
                    GameObject.DestroyImmediate(audioSrc);
                }
            }
        }


        PrefabUtility.CreatePrefab(path, instanceObj);
        GameObject.DestroyImmediate(instanceObj);
        AssetDatabase.ImportAsset(path);
    }
Example #21
0
 /// <summary>
 /// Resume playing audio clips after calling a Pause.
 /// </summary>
 public override void Resume()
 {
     {
         var __array4       = GetTimelineItems();
         var __arrayLength4 = __array4.Length;
         for (int __i4 = 0; __i4 < __arrayLength4; ++__i4)
         {
             var item = (TimelineItem)__array4[__i4];
             {
                 CinemaAudio cinemaAudio = item as CinemaAudio;
                 if (cinemaAudio != null)
                 {
                     if (((base.Cutscene.RunningTime > cinemaAudio.Firetime)) && (base.Cutscene.RunningTime < (cinemaAudio.Firetime + cinemaAudio.Duration)))
                     {
                         cinemaAudio.Resume();
                     }
                 }
             }
         }
     }
 }
    public override void Draw(DirectorControlState state)
    {
        CinemaAudio audioItem = Wrapper.Behaviour as CinemaAudio;

        if (audioItem == null)
        {
            return;
        }


        if (Selection.activeGameObject == audioItem.gameObject)
        {
            GUI.Box(controlPosition, string.Empty, TimelineTrackControl.styles.AudioTrackItemSelectedStyle);
        }
        else
        {
            GUI.Box(controlPosition, string.Empty, TimelineTrackControl.styles.AudioTrackItemStyle);
        }

        if (audioItem.audio != null && audioItem.audio.clip != null)
        {
            GUILayout.BeginArea(controlPosition);
            if (audioItemName != audioItem.audio.clip.name)
            {
                audioItemName = audioItem.audio.clip.name;
                texture       = AssetPreview.GetAssetPreview(audioItem.audio.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();
        }
    }
    void CinemaAudioControl_AlterFixedAction(object sender, ActionFixedItemEventArgs e)
    {
        CinemaAudio audioItem = e.actionItem as CinemaAudio;

        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;
        }
    }
Example #24
0
    internal static CinemaAudio CreateCinemaAudio(AudioTrack track, AudioClip clip, float firetime)
    {
        string      name        = DirectorHelper.getCutsceneItemName(track.gameObject, AUDIO_CLIP_NAME_DEFAULT, typeof(CinemaAudio));
        GameObject  item        = new GameObject(name);
        CinemaAudio cinemaAudio = item.AddComponent <CinemaAudio>();
        AudioSource source      = item.AddComponent <AudioSource>();

        source.clip = clip;

        SortedDictionary <float, CinemaAudio> sortedClips = new SortedDictionary <float, CinemaAudio>();

        foreach (CinemaAudio a in track.AudioClips)
        {
            sortedClips.Add(a.Firetime, a);
        }

        float latestTime = firetime;

        float length = source.clip.length;

        foreach (CinemaAudio a in sortedClips.Values)
        {
            if (!(latestTime < a.Firetime && latestTime + length <= a.Firetime))
            {
                latestTime = a.Firetime + a.Duration;
            }
        }

        cinemaAudio.Firetime   = latestTime;
        cinemaAudio.Duration   = length;
        cinemaAudio.InTime     = 0;
        cinemaAudio.OutTime    = length;
        cinemaAudio.ItemLength = length;
        source.playOnAwake     = false;
        item.transform.parent  = track.transform;

        return(cinemaAudio);
    }
    protected override void updateHeaderControl3(UnityEngine.Rect position)
    {
        AudioTrack track = TargetTrack.Behaviour as AudioTrack;

        if (track == null)
        {
            return;
        }

        Color temp = GUI.color;

        GUI.color = (track.AudioClips.Length > 0) ? Color.green : Color.red;

        int controlID = GUIUtility.GetControlID(track.GetInstanceID(), FocusType.Passive, position);

        if (GUI.Button(position, string.Empty, TrackGroupControl.styles.addIcon))
        {
            EditorGUIUtility.ShowObjectPicker <AudioClip>(null, false, string.Empty, controlID);
        }

        if (Event.current.type == EventType.ExecuteCommand && Event.current.commandName == "ObjectSelectorClosed")
        {
            if (EditorGUIUtility.GetObjectPickerControlID() == controlID)
            {
                Object    pickedObject = EditorGUIUtility.GetObjectPickerObject();
                AudioClip clip         = (pickedObject as AudioClip);
                if (clip != null)
                {
                    CinemaAudio ca = CutsceneItemFactory.CreateCinemaAudio(track, clip, state.ScrubberPosition);
                    Undo.RegisterCreatedObjectUndo(ca, string.Format("Created {0}", ca.name));
                }
                Event.current.Use();
            }
        }
        GUI.color = temp;
    }
    public override void Draw(DirectorControlState state)
    {
        CinemaAudio audioItem = Wrapper.Behaviour as CinemaAudio;

        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;


                    if (!EditorPrefs.HasKey("DirectorControl.UseHQWaveformTextures"))
                    {
                        EditorPrefs.SetBool("DirectorControl.UseHQWaveformTextures", true);
                    }

                    if (EditorPrefs.GetBool("DirectorControl.UseHQWaveformTextures"))
                    {
                        texture = GenerateAudioWaveformTexture(audioSource.clip);
                    }
                    else
                    {
                        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();
            }
        }
    }
Example #27
0
    private void handleDragInteraction(Rect position, AudioTrack track, Vector2 translation, Vector2 scale)
    {
        Rect controlBackground = new Rect(0, 0, position.width, position.height);

        switch (Event.current.type)
        {
        case EventType.DragUpdated:
            if (controlBackground.Contains(Event.current.mousePosition))
            {
                bool audioFound = false;
                {
                    // foreach(var objectReference in DragAndDrop.objectReferences)
                    var __enumerator1 = (DragAndDrop.objectReferences).GetEnumerator();
                    while (__enumerator1.MoveNext())
                    {
                        var objectReference = (Object)__enumerator1.Current;
                        {
                            AudioClip clip = objectReference as AudioClip;
                            if (clip != null)
                            {
                                audioFound = true;
                                break;
                            }
                        }
                    }
                }
                if (audioFound)
                {
                    DragAndDrop.visualMode = DragAndDropVisualMode.Link;
                    Event.current.Use();
                }
            }
            break;

        case EventType.DragPerform:
            if (controlBackground.Contains(Event.current.mousePosition))
            {
                AudioClip clip = null;
                {
                    // foreach(var objectReference in DragAndDrop.objectReferences)
                    var __enumerator2 = (DragAndDrop.objectReferences).GetEnumerator();
                    while (__enumerator2.MoveNext())
                    {
                        var objectReference = (Object)__enumerator2.Current;
                        {
                            AudioClip audioClip = objectReference as AudioClip;
                            if (audioClip != null)
                            {
                                clip = audioClip;
                                break;
                            }
                        }
                    }
                }
                if (clip != null)
                {
                    float       fireTime = (Event.current.mousePosition.x - translation.x) / scale.x;
                    CinemaAudio ca       = CutsceneItemFactory.CreateCinemaAudio(track, clip, fireTime);
                    Undo.RegisterCreatedObjectUndo(ca, string.Format("Created {0}", ca.name));
                    Event.current.Use();
                }
            }
            break;
        }
    }