Example #1
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 #2
0
    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();
            }
        }
    }