/// <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(); } } } }
/// <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(); }
/// <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(); } } } } } }
/// <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(); } } }
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"); }
/// <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); } } }
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); } }
/// <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(); } } }
/// <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; } }
/// <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(); } } }
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); } } }
/// <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); } } }
/// <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(); } } } }
/// <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(); } } } }
/// <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(); } } } } }
/// <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(); }
/// <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(); } } } } }
/// <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); } } } } }
/// <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); }
/// <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; } }
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(); } } }
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; } }