Exemple #1
0
    /// <summary>
    /// Update and Draw the inspector
    /// </summary>
    public override void OnInspectorGUI()
    {
        visualTrack.Update();

        EditorGUILayout.Foldout(shotFoldout, "Shot List");
        ShotTrack track = base.serializedObject.targetObject as ShotTrack;

        {
            var __array1       = track.TimelineItems;
            var __arrayLength1 = __array1.Length;
            for (int __i1 = 0; __i1 < __arrayLength1; ++__i1)
            {
                var shot = (CinemaShot)__array1[__i1];
                {
                    shot.name = EditorGUILayout.TextField(new GUIContent("Shot Name"), shot.name);

                    EditorGUI.indentLevel++;
                    shot.shotCamera = EditorGUILayout.ObjectField(new GUIContent("Camera"), shot.shotCamera, typeof(Camera), true) as Camera;
                    shot.CutTime    = EditorGUILayout.FloatField(new GUIContent("Cut Time"), shot.CutTime);
                    shot.ShotLength = EditorGUILayout.FloatField(new GUIContent("Shot Length"), shot.ShotLength);
                    EditorGUI.indentLevel--;
                }
            }
        }
        if (GUILayout.Button("Add New Shot"))
        {
            CutsceneItemFactory.CreateNewShot(track);
        }
        visualTrack.ApplyModifiedProperties();
    }
Exemple #2
0
        /// <summary>
        /// Add a new track
        /// </summary>
        /// <param name="userData">TrackContextData for the track to be created.</param>
        private static void addTrack(object userData)
        {
            TrackContextData trackData = userData as TrackContextData;

            if (trackData != null)
            {
                GameObject item = CutsceneItemFactory.CreateTimelineTrack(trackData.TrackGroup, trackData.Type, trackData.Label).gameObject;
                Undo.RegisterCreatedObjectUndo(item, string.Format("Create {0}", item.name));
            }
        }
Exemple #3
0
    /// <summary>
    /// Add a new track group to the current cutscene.
    /// </summary>
    /// <param name="userData">TrackGroupContextData containing track group label and type</param>
    private void AddTrackGroup(object userData)
    {
        TrackGroupContextData data = userData as TrackGroupContextData;

        if (data != null)
        {
            GameObject item = CutsceneItemFactory.CreateTrackGroup(cutscene, data.Type, data.Label).gameObject;
            Undo.RegisterCreatedObjectUndo(item, string.Format("Create {0}", item.name));
        }
    }
Exemple #4
0
    private void addSubGroup(object userData)
    {
        TrackContextData trackData = userData as TrackContextData;

        if (trackData != null)
        {
            GameObject item = CutsceneItemFactory.CreateSubTrackGroup(trackData.TrackGroup, trackData.Type, trackData.Label).gameObject;
            this.isExpanded = true;
            Undo.RegisterCreatedObjectUndo(item, string.Format("Create {0}", item.name));
        }
    }
    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;
        }
    }
    private void AddActorAction(object userData)
    {
        ContextData data = userData as ContextData;

        if (data != null)
        {
            string name = DirectorHelper.getCutsceneItemName(data.Label, data.Type);

            GameObject item = CutsceneItemFactory.CreateActorAction((TargetTrack.Behaviour as ActorItemTrack), data.Type, name, state.ScrubberPosition).gameObject;
            Undo.RegisterCreatedObjectUndo(item, string.Format("Created {0}", item.name));
        }
    }
    private void AddGlobalEvent(object userData)
    {
        TrackItemInfoContextData data = userData as TrackItemInfoContextData;

        if (data != null)
        {
            string name = DirectorHelper.getCutsceneItemName(data.Label, data.Type);

            float      firetime = state.IsInPreviewMode ? state.ScrubberPosition : 0f;
            GameObject item     = CutsceneItemFactory.CreateGlobalEvent((TargetTrack.Behaviour as GlobalItemTrack), data.Type, name, firetime).gameObject;
            Undo.RegisterCreatedObjectUndo(item, string.Format("Created {0}", item.name));
        }
    }
    /// <summary>
    /// Update and Draw the inspector
    /// </summary>
    public override void OnInspectorGUI()
    {
        curveTrack.Update();

        foreach (CinemaActorClipCurve clip in (target as CurveTrack).TimelineItems)
        {
            EditorGUILayout.ObjectField(clip.name, clip, typeof(CinemaActorClipCurve), true);
        }

        if (GUILayout.Button(addClip))
        {
            Undo.RegisterCreatedObjectUndo(CutsceneItemFactory.CreateActorClipCurve((target as CurveTrack)).gameObject, "Create Curve Clip");
        }

        curveTrack.ApplyModifiedProperties();
    }
Exemple #9
0
    /// <summary>
    /// Update and Draw the inspector
    /// </summary>
    public override void OnInspectorGUI()
    {
        curveTrack.Update();
        TimelineItem[] items = (target as CurveTrack).TimelineItems;
        for (int i = 0; i < items.Length; i++)
        {
            CinemaActorClipCurve clip = items[i] as CinemaActorClipCurve;
            EditorGUILayout.ObjectField(clip.name, clip, typeof(CinemaActorClipCurve), true);
        }

        if (GUILayout.Button(addClip))
        {
            Undo.RegisterCreatedObjectUndo(CutsceneItemFactory.CreateActorClipCurve((target as CurveTrack)).gameObject, "Create Curve Clip");
        }

        curveTrack.ApplyModifiedProperties();
    }
    private void addCutsceneItem(object userData)
    {
        ContextData data = userData as ContextData;

        if (data != null)
        {
            if (data.PairedType == null)
            {
                GameObject item = CutsceneItemFactory.CreateCutsceneItem(data.Track, data.Type, data.Label, data.Firetime).gameObject;
                Undo.RegisterCreatedObjectUndo(item, string.Format("Create {0}", item.name));
            }
            else
            {
                showObjectPicker(data);
            }
        }
    }
Exemple #11
0
    /// <summary>
    /// Update and Draw the inspector
    /// </summary>
    public override void OnInspectorGUI()
    {
        curveTrack.Update();
        {
            var __array1       = (target as MultiCurveTrack).TimelineItems;
            var __arrayLength1 = __array1.Length;
            for (int __i1 = 0; __i1 < __arrayLength1; ++__i1)
            {
                var clip = (CinemaMultiActorCurveClip)__array1[__i1];
                {
                    EditorGUILayout.ObjectField(clip.name, clip, typeof(CinemaMultiActorCurveClip), true);
                }
            }
        }
        if (GUILayout.Button(addClip))
        {
            Undo.RegisterCreatedObjectUndo(CutsceneItemFactory.CreateMultiActorClipCurve((target as MultiCurveTrack)).gameObject, "Create Curve Clip");
        }

        curveTrack.ApplyModifiedProperties();
    }
Exemple #12
0
    void directorControl_DragPerformed(object sender, CinemaDirectorDragArgs e)
    {
        Cutscene c = e.cutscene as Cutscene;

        if (c != null)
        {
            if (e.references != null)
            {
                if (e.references.Length == 1)
                {
                    GameObject gameObject = e.references[0] as GameObject;
                    if (gameObject != null)
                    {
                        ActorTrackGroup atg = CutsceneItemFactory.CreateTrackGroup(c, typeof(ActorTrackGroup), string.Format("{0} Track Group", gameObject.name)) as ActorTrackGroup;
                        atg.Actor = gameObject.GetComponent <Transform>();

                        Undo.RegisterCreatedObjectUndo(atg.gameObject, string.Format("Created {0}", atg.gameObject.name));
                    }
                }
            }
        }
    }
    /// <summary>
    /// Update and Draw the inspector
    /// </summary>
    public override void OnInspectorGUI()
    {
        visualTrack.Update();

        EditorGUILayout.Foldout(shotFoldout, "Shot List");
        ShotTrack track = base.serializedObject.targetObject as ShotTrack;

        TimelineItem[] items = track.TimelineItems;
        for (int i = 0; i < items.Length; i++)
        {
            CinemaGlobalAction shot = items[i] as CinemaGlobalAction;
            shot.name = EditorGUILayout.TextField(new GUIContent("Shot Name"), shot.name);

            EditorGUI.indentLevel++;


            // Check if it is an actor event.
            CinemaShot cinemaShot = shot as CinemaShot;
            if (cinemaShot != null)
            {
                cinemaShot.shotCamera = EditorGUILayout.ObjectField(new GUIContent("Camera"), cinemaShot.shotCamera, typeof(Camera), true) as Camera;
            }
            else
            {
                // Display something for non-default shots
            }

            shot.Firetime = EditorGUILayout.FloatField(new GUIContent("Cut Time"), shot.Firetime);
            shot.Duration = EditorGUILayout.FloatField(new GUIContent("Shot Length"), shot.Duration);
            EditorGUI.indentLevel--;
        }

        if (GUILayout.Button("Add New Shot"))
        {
            CutsceneItemFactory.CreateNewShot(track);
        }
        visualTrack.ApplyModifiedProperties();
    }
    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;
    }
    /// <summary>
    /// Update and Draw the inspector
    /// </summary>
    public override void OnInspectorGUI()
    {
        visualTrack.Update();

        EditorGUILayout.Foldout(shotFoldout, "Shot List");
        ShotTrack track = base.serializedObject.targetObject as ShotTrack;

        foreach (CinemaShot shot in track.Shots)
        {
            shot.name = EditorGUILayout.TextField(new GUIContent("Shot Name"), shot.name);

            EditorGUI.indentLevel++;
            shot.shotCamera = EditorGUILayout.ObjectField(new GUIContent("Camera"), shot.shotCamera, typeof(Camera), true) as Camera;
            shot.CutTime    = EditorGUILayout.FloatField(new GUIContent("Cut Time"), shot.CutTime);
            shot.ShotLength = EditorGUILayout.FloatField(new GUIContent("Shot Length"), shot.ShotLength);
            EditorGUI.indentLevel--;
        }

        if (GUILayout.Button("Add New Shot"))
        {
            CutsceneItemFactory.CreateNewShot(track);
        }
        visualTrack.ApplyModifiedProperties();
    }
 /// <summary>
 /// Add an empty multi actor group to the current cutscene.
 /// </summary>
 private void addMultiActorGroup()
 {
     Undo.RegisterCreatedObjectUndo(CutsceneItemFactory.CreateMultiActorTrackGroup(cutscene).gameObject, "Create Multi-Actor Group");
 }
Exemple #17
0
    private void addNewShot(ShotTrack shotTrack)
    {
        GameObject shot = CutsceneItemFactory.CreateNewShot(shotTrack).gameObject;

        Undo.RegisterCreatedObjectUndo(shot, string.Format("Create {0}", shot.name));
    }
 private void addNewCurveItem(CurveTrack track)
 {
     Undo.RegisterCreatedObjectUndo(CutsceneItemFactory.CreateActorClipCurve(track), "Created Actor Clip Curve");
 }
 /// <summary>
 /// Add a director group to the current cutscene.
 /// </summary>
 private void addDirectorGroup()
 {
     Undo.RegisterCreatedObjectUndo(CutsceneItemFactory.CreateDirectorGroup(cutscene).gameObject, "Create Director Group");
 }
    private void addShotTrack()
    {
        DirectorGroup dg = TrackGroup.Behaviour as DirectorGroup;

        Undo.RegisterCreatedObjectUndo(CutsceneItemFactory.CreateShotTrack(dg), "Create Shot Track");
    }
    internal void addGlobalItemTrack()
    {
        DirectorGroup directorGroup = base.serializedObject.targetObject as DirectorGroup;

        Undo.RegisterCreatedObjectUndo(CutsceneItemFactory.CreateGlobalItemTrack(directorGroup), "Create Global Track");
    }
    private void addEventTrack()
    {
        MultiActorTrackGroup actorTrackGroup = base.serializedObject.targetObject as MultiActorTrackGroup;

        Undo.RegisterCreatedObjectUndo(CutsceneItemFactory.CreateActorItemTrack(actorTrackGroup).gameObject, "Create Actor Track");
    }
Exemple #23
0
        public static void CreateCutscene(List <Sequence.FrameInfo> Frames, float DurationPerFrame)
        {
            string cutsceneName = DirectorHelper.getCutsceneItemName("New Cutscene", typeof(Cutscene));

            GameObject cutsceneGO = new GameObject(cutsceneName);
            Cutscene   cutscene   = cutsceneGO.AddComponent <Cutscene>();

            GameObject framesGO = new GameObject("Frames");

            framesGO.transform.SetParent(cutsceneGO.transform);

            GameObject triggersGO = new GameObject("Triggers");

            triggersGO.transform.SetParent(cutsceneGO.transform);

            List <Transform> frameTransforms = new List <Transform>();
            float            time            = 0;

            for (int i = 0; i < Frames.Count; i++)
            {
                if (Frames[i].m_Source == null)
                {
                    time += DurationPerFrame * Frames[i].Duration;
                    continue;
                }
                var frameGO = GameObject.Instantiate(Frames[i].m_Source) as GameObject;
                frameGO.name = Frames[i].m_Source.name;
                frameGO.transform.SetParent(framesGO.transform);
                frameGO.transform.localPosition    = Vector3.zero;
                frameGO.transform.localEulerAngles = Vector3.zero;
                frameGO.transform.localScale       = Vector3.one;
                frameGO.SetActive(false);
                frameTransforms.Add(frameGO.transform);
                var group = CutsceneItemFactory.CreateActorTrackGroup(cutscene, frameGO.transform) as ActorTrackGroup;
                group.transform.SetParent(triggersGO.transform);
                var track  = CutsceneItemFactory.CreateActorItemTrack(group);
                var action = CutsceneItemFactory.CreateActorAction(track, typeof(EnableGameObjectAction),
                                                                   "Temporary Enable", time) as EnableGameObjectAction;
                action.Firetime = time;
                action.Duration = DurationPerFrame * Frames[i].Duration;
                time           += action.Duration;

                CutsceneItemFactory.CreateActorEvent(track, typeof(DisableGameObject), "Disable", 0);
            }

            cutscene.Duration    = time;
            cutscene.IsLooping   = true;
            cutscene.IsSkippable = false;

            // Cutscene trigger
            GameObject cutsceneTriggerGO = new GameObject("Cutscene Trigger");

            cutsceneTriggerGO.transform.SetParent(cutsceneGO.transform);
            CutsceneTrigger cutsceneTrigger = cutsceneTriggerGO.AddComponent <CutsceneTrigger>();

            cutsceneTrigger.StartMethod = StartMethod.OnStart;
            cutsceneTrigger.Cutscene    = cutscene;

            int undoIndex = Undo.GetCurrentGroup();

            Undo.RegisterCreatedObjectUndo(cutsceneGO, "Created New Cutscene");
            Undo.CollapseUndoOperations(undoIndex);

            Selection.activeTransform = cutsceneGO.transform;

            // Open director
            DirectorWindow window = EditorWindow.GetWindow(typeof(DirectorWindow)) as DirectorWindow;

            window.FocusCutscene(cutscene);
        }
    /// <summary>
    /// Draws the Director GUI
    /// </summary>
    protected void OnGUI()
    {
        scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition);
        {
            txtCutsceneName = EditorGUILayout.TextField(NameContentCutscene, txtCutsceneName);
            EditorGUILayout.BeginHorizontal();
            txtDuration = EditorGUILayout.FloatField(DurationContentCutscene, txtDuration);
            timeEnum    = (DirectorHelper.TimeEnum)EditorGUILayout.EnumPopup(timeEnum);
            EditorGUILayout.EndHorizontal();

            isLooping   = EditorGUILayout.Toggle(LoopingContentCutscene, isLooping);
            isSkippable = EditorGUILayout.Toggle(SkippableContentCutscene, isSkippable);
            StartMethod = (StartMethod)EditorGUILayout.EnumPopup(new GUIContent("开始方法"), StartMethod);

            EditorGUILayout.Space();
            EditorGUILayout.LabelField("轨道组", EditorStyles.boldLabel);

            // Director Group
            directorTrackGroupsSelection = EditorGUILayout.Popup(AddDirectorGroupContent, directorTrackGroupsSelection, intValues1.ToArray());

            if (directorTrackGroupsSelection > 0)
            {
                EditorGUI.indentLevel++;

                // Shot Tracks
                shotTrackSelection = EditorGUILayout.Popup(AddShotTracksContent, shotTrackSelection, intValues1.ToArray());

                // Audio Tracks
                audioTrackSelection = EditorGUILayout.Popup(AddAudioTracksContent, audioTrackSelection, intValues4.ToArray());

                // Global Item Tracks
                globalItemTrackSelection = EditorGUILayout.Popup(AddGlobalTracksContent, globalItemTrackSelection, intValues10.ToArray());

                EditorGUI.indentLevel--;
            }

            EditorGUILayout.Space();

            // Actor Track Groups
            int actorCount = EditorGUILayout.Popup(new GUIContent("主角轨道群组"), actorTrackGroupsSelection, intValues10.ToArray());

            if (actorCount != actorTrackGroupsSelection)
            {
                actorTrackGroupsSelection = actorCount;

                Transform[] tempActors = new Transform[actors.Length];
                Array.Copy(actors, tempActors, actors.Length);

                actors = new Transform[actorCount];
                int amount = Math.Min(actorCount, tempActors.Length);
                Array.Copy(tempActors, actors, amount);
            }

            EditorGUI.indentLevel++;
            for (int i = 1; i <= actorTrackGroupsSelection; i++)
            {
                actors[i - 1] = EditorGUILayout.ObjectField(new GUIContent(string.Format("主角 {0}", i)), actors[i - 1], typeof(Transform), true) as Transform;
            }
            EditorGUI.indentLevel--;

            EditorGUILayout.Space();
            // Multi Actor Track Groups
            multiActorTrackGroupsSelection = EditorGUILayout.Popup(new GUIContent("多主角轨道群组"), multiActorTrackGroupsSelection, intValues10.ToArray());
            EditorGUI.indentLevel++;
            EditorGUI.indentLevel--;
            Add(ref characters, ref characterTrackGroupsSelection, "ActorTrackGroups");
            for (int i = 1; i <= characterTrackGroupsSelection; i++)
            {
                characters[i - 1] = EditorGUILayout.ObjectField(new GUIContent(string.Format("角色 {0}", i)), characters[i - 1], typeof(Transform), true) as Transform;
            }
            EditorGUI.indentLevel--;
        }

        EditorGUILayout.EndScrollView();

        EditorGUILayout.BeginHorizontal();
        {
            if (GUILayout.Button("I'm Feeling Lucky"))
            {
                List <Transform> interestingActors = UnitySceneEvaluator.GetHighestRankedGameObjects(10);

                actorTrackGroupsSelection = interestingActors.Count;
                actors = interestingActors.ToArray();
            }

            if (GUILayout.Button("创建剧情"))
            {
                string cutsceneName = DirectorHelper.getCutsceneItemName(txtCutsceneName, typeof(Cutscene));

                GameObject cutsceneGO = new GameObject(cutsceneName);
                Cutscene   cutscene   = cutsceneGO.AddComponent <Cutscene>();
                for (int i = 0; i < directorTrackGroupsSelection; i++)
                {
                    DirectorGroup dg = CutsceneItemFactory.CreateDirectorGroup(cutscene);
                    dg.Ordinal = 0;
                    for (int j = 0; j < shotTrackSelection; j++)
                    {
                        CutsceneItemFactory.CreateShotTrack(dg);
                    }
                    for (int j = 0; j < audioTrackSelection; j++)
                    {
                        CutsceneItemFactory.CreateAudioTrack(dg);
                    }
                    for (int j = 0; j < globalItemTrackSelection; j++)
                    {
                        CutsceneItemFactory.CreateGlobalItemTrack(dg);
                    }
                }

                for (int i = 0; i < actorTrackGroupsSelection; i++)
                {
                    CutsceneItemFactory.CreateActorTrackGroup(cutscene, actors[i]);
                }

                for (int i = 0; i < multiActorTrackGroupsSelection; i++)
                {
                    CutsceneItemFactory.CreateMultiActorTrackGroup(cutscene);
                }

                for (int i = 0; i < characterTrackGroupsSelection; i++)
                {
                    CutsceneItemFactory.CreateCharacterTrackGroup(cutscene, characters[i]);
                }
                float duration = txtDuration;
                if (timeEnum == DirectorHelper.TimeEnum.Minutes)
                {
                    duration *= 60;
                }
                cutscene.Duration = duration;

                int undoIndex = Undo.GetCurrentGroup();

                if (StartMethod != StartMethod.None)
                {
                    GameObject      cutsceneTriggerGO = new GameObject("Cutscene Trigger");
                    CutsceneTrigger cutsceneTrigger   = cutsceneTriggerGO.AddComponent <CutsceneTrigger>();
                    if (StartMethod == StartMethod.OnTrigger)
                    {
                        cutsceneTriggerGO.AddComponent <BoxCollider>();
                    }
                    cutsceneTrigger.StartMethod = StartMethod;
                    cutsceneTrigger.Cutscene    = cutscene;
                    Undo.RegisterCreatedObjectUndo(cutsceneTriggerGO, string.Format("Created {0}", txtCutsceneName));
                }

                Undo.RegisterCreatedObjectUndo(cutsceneGO, string.Format("Created {0}", txtCutsceneName));
                Undo.CollapseUndoOperations(undoIndex);
                Selection.activeTransform = cutsceneGO.transform;
            }
        }
        EditorGUILayout.EndHorizontal();
    }
    internal void addCurveTrack()
    {
        ActorTrackGroup actorTrackGroup = base.serializedObject.targetObject as ActorTrackGroup;

        Undo.RegisterCreatedObjectUndo(CutsceneItemFactory.CreateCurveTrack(actorTrackGroup).gameObject, "Create Curve Track");
    }
Exemple #26
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;
        }
    }
    public Cutscene CreateCutscene()
    {
        string cutsceneName = DirectorHelper.getCutsceneItemName(txtCutsceneName, typeof(Cutscene));

        GameObject cutsceneGO = new GameObject(cutsceneName);
        Cutscene   cutscene   = cutsceneGO.AddComponent <Cutscene>();

        for (int i = 0; i < directorTrackGroupsSelection; i++)
        {
            DirectorGroup dg = CutsceneItemFactory.CreateDirectorGroup(cutscene);
            dg.Ordinal = 0;
            for (int j = 0; j < shotTrackSelection; j++)
            {
                CutsceneItemFactory.CreateShotTrack(dg);
            }
            for (int j = 0; j < audioTrackSelection; j++)
            {
                CutsceneItemFactory.CreateAudioTrack(dg);
            }
            for (int j = 0; j < globalItemTrackSelection; j++)
            {
                CutsceneItemFactory.CreateGlobalItemTrack(dg);
            }
        }

        for (int i = 0; i < actorTrackGroupsSelection; i++)
        {
            CutsceneItemFactory.CreateActorTrackGroup(cutscene, actors[i]);
        }

        for (int i = 0; i < multiActorTrackGroupsSelection; i++)
        {
            CutsceneItemFactory.CreateMultiActorTrackGroup(cutscene);
        }

        for (int i = 0; i < characterTrackGroupsSelection; i++)
        {
            CutsceneItemFactory.CreateCharacterTrackGroup(cutscene, characters[i]);
        }

        float duration = txtDuration;

        if (timeEnum == DirectorHelper.TimeEnum.Minutes)
        {
            duration *= 60;
        }
        cutscene.Duration = duration;

        cutscene.IsLooping = isLooping;

        cutscene.IsSkippable = isSkippable;

        int undoIndex = Undo.GetCurrentGroup();

        if (StartMethod != StartMethod.None)
        {
            CreateCutsceneTrigger(cutscene);
        }

        Undo.RegisterCreatedObjectUndo(cutsceneGO, string.Format("Created {0}", txtCutsceneName));
        Undo.CollapseUndoOperations(undoIndex);

        Selection.activeTransform = cutsceneGO.transform;

        return(cutscene);
    }
    private void addCurveTrack()
    {
        ActorTrackGroup atg = TrackGroup.Behaviour as ActorTrackGroup;

        Undo.RegisterCreatedObjectUndo(CutsceneItemFactory.CreateCurveTrack(atg).gameObject, "Create Curve Track");
    }
    private void addCutsceneItem(ContextData data, UnityEngine.Object pickedObject)
    {
        GameObject item = CutsceneItemFactory.CreateCutsceneItem(data.Track, data.Type, data.Label, pickedObject, data.Firetime).gameObject;

        Undo.RegisterCreatedObjectUndo(item, string.Format("Create {0}", item.name));
    }
Exemple #30
0
    private void addActorTrack()
    {
        MultiActorTrackGroup matg = TrackGroup.Behaviour as MultiActorTrackGroup;

        Undo.RegisterCreatedObjectUndo(CutsceneItemFactory.CreateActorItemTrack(matg).gameObject, "Create Actor Track");
    }