/// <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); }
public override void Draw(DirectorControlState state) { CinemaAudio audioItem = Wrapper.Behaviour as CinemaAudio; if (audioItem == null) { return; } AudioSource audioSource = audioItem.GetComponent <AudioSource>(); if (Selection.activeGameObject == audioItem.gameObject) { GUI.Box(controlPosition, string.Empty, TimelineTrackControl.styles.AudioTrackItemSelectedStyle); } else { GUI.Box(controlPosition, string.Empty, TimelineTrackControl.styles.AudioTrackItemStyle); } 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(); } }
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(); } } }