상속: MonoBehaviour
예제 #1
0
 public void initializeScript(CutsceneTrigger currentCutscene)
 {
     playerMovement.InCutscene = true;
     this.currentCutscene      = currentCutscene;
     this.currentScript        = this.currentCutscene.CutsceneScript;
     scriptRunner = 0;
 }
예제 #2
0
파일: Fade.cs 프로젝트: MohdAAyyad/Rostra
 public void TransitionIntoACutscene(CutsceneTrigger cutTrigger)
 {
     cutsceneTriggerRef      = cutTrigger;
     fadeOut                 = !fadeOut;
     transitionIntoACutscene = true;
     //Debug.Log("Transition into a cutscene called");
 }
예제 #3
0
    internal void createCutsceneTrigger()
    {
        CutsceneCreatorWindow ccw = CreateInstance <CutsceneCreatorWindow>();
        Cutscene        cs        = cutscene != null ? cutscene : null;// explicitly set to null if cutscene is missing
        CutsceneTrigger ct        = ccw.CreateCutsceneTrigger(cs);

        Selection.activeGameObject = ct.gameObject;
    }
예제 #4
0
 public void RemoveTrigger(CutsceneTrigger trigger)
 {
     if (!cutTriggers.Contains(trigger))
     {
         return;
     }
     cutTriggers.Remove(trigger);
 }
예제 #5
0
    static void createCutsceneTrigger()
    {
        GameObject      cutsceneTriggerGO = new GameObject("Cutscene Trigger");
        CutsceneTrigger cutsceneTrigger   = cutsceneTriggerGO.AddComponent <CutsceneTrigger>();

        cutsceneTrigger.StartMethod = StartMethod.OnTrigger;
        cutsceneTriggerGO.AddComponent <BoxCollider>();
    }
예제 #6
0
 private void endCutscene()
 {
     inMovement      = false;
     inDialogue      = false;
     inAction        = false;
     currentCutscene = null;
     dialogueController.endCutsceneDialogue();
     playerMovement.InCutscene = false;
     Destroy(currentCutscene);
 }
예제 #7
0
    /// <summary>
    /// Draw the inspector
    /// </summary>
    public override void OnInspectorGUI()
    {
        trigger.Update();

        EditorGUILayout.PropertyField(cutName, cutsceneIdContent);
//        EditorGUILayout.PropertyField(cutscene);
//
//        if (string.IsNullOrEmpty(cutName.stringValue) && cutscene.objectReferenceValue != null)
//        {
//            cutName.stringValue = cutscene.objectReferenceValue.name;
//        }
        StartMethod newStartMethod = (StartMethod)EditorGUILayout.EnumPopup(startMethodContent, (StartMethod)startMethod.enumValueIndex);

        if (newStartMethod != (StartMethod)startMethod.enumValueIndex)
        {
            startMethod.enumValueIndex = (int)newStartMethod;

            if (newStartMethod == StartMethod.OnTrigger)
            {
                CutsceneTrigger cutsceneTrigger = (this.target as CutsceneTrigger);
                Collider        collider        = cutsceneTrigger.gameObject.GetComponent <BoxCollider>();
                if (collider == null)
                {
                    cutsceneTrigger.gameObject.AddComponent <BoxCollider>();
                }
            }
            else
            {
                // Can't cleanly destroy collider yet.
                CutsceneTrigger cutsceneTrigger = (this.target as CutsceneTrigger);
                Collider        collider        = cutsceneTrigger.gameObject.GetComponent <BoxCollider>();
                if (collider != null)
                {
                    collider.enabled = false;
                }
            }
        }

        if (newStartMethod == StartMethod.OnTrigger)
        {
            CutsceneTrigger cutsceneTrigger = (this.target as CutsceneTrigger);
            Collider        collider        = cutsceneTrigger.gameObject.GetComponent <BoxCollider>();
            collider.enabled = true;
        }

        EditorGUILayout.PropertyField(loop);
//        EditorGUILayout.PropertyField(skipButton);

        trigger.ApplyModifiedProperties();
    }
    /// <summary>
    /// Draw the inspector
    /// </summary>
    public override void OnInspectorGUI()
    {
        trigger.Update();

        EditorGUILayout.PropertyField(cutscene);
        StartMethod newStartMethod = (StartMethod)EditorGUILayout.EnumPopup(startMethodContent, (StartMethod)startMethod.enumValueIndex);

        if (newStartMethod != (StartMethod)startMethod.enumValueIndex)
        {
            startMethod.enumValueIndex = (int)newStartMethod;

            CutsceneTrigger cutsceneTrigger = (this.target as CutsceneTrigger);
            if (newStartMethod == StartMethod.OnTrigger || newStartMethod == StartMethod.OnTriggerStayAndButtonDown)
            {
                if (cutsceneTrigger != null && cutsceneTrigger.gameObject.GetComponent <BoxCollider>() == null)
                {
                    cutsceneTrigger.gameObject.AddComponent <BoxCollider>();
                    cutsceneTrigger.gameObject.GetComponent <BoxCollider>().isTrigger = true;
                }
                else if (cutsceneTrigger != null && cutsceneTrigger.gameObject.GetComponent <BoxCollider>() != null)
                {
                    cutsceneTrigger.gameObject.GetComponent <BoxCollider>().isTrigger = true;
                }
            }
            else
            {
                // Can't cleanly destroy collider yet.
                //CutsceneTrigger cutsceneTrigger = (this.target as CutsceneTrigger);
                //if (cutsceneTrigger != null && cutsceneTrigger.gameObject.GetComponent<Collider>() != null)
                //{
                //    Collider c = cutsceneTrigger.gameObject.GetComponent<Collider>();
                //    DestroyImmediate(c, true);
                //}
            }
        }

        if (newStartMethod == StartMethod.OnTrigger)
        {
            EditorGUILayout.PropertyField(triggerObject);
        }
        else if (newStartMethod == StartMethod.OnTriggerStayAndButtonDown)
        {
            EditorGUILayout.PropertyField(triggerObject);
            EditorGUILayout.PropertyField(triggerButton);
        }

        EditorGUILayout.PropertyField(skipButton);

        trigger.ApplyModifiedProperties();
    }
예제 #9
0
    public void ShowDialog(CutsceneTrigger trigger)
    {
        //player.GetComponent<Animator>().StartPlayback(); //don't know why start stops animations, but it does
        dialogue = true;
        dialogUI.SetActive(true);

        for (int i = 0; i < 8; i++)
        {
            uiPlants[i].enabled        = false;
            uiPlantCounters[i].enabled = false;
            uiButtonCounter[i].enabled = false;
        }
        cutsceneTrigger = trigger;
    }
예제 #10
0
    public CutsceneTrigger CreateCutsceneTrigger(Cutscene cutscene)
    {
        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));

        return(cutsceneTrigger);
    }
예제 #11
0
        //private void setSceneEntityShadow(List<SceneEntity> entitys, bool isVisable)
        //{
        //    if (entitys == null || entitys.Count <= 0) return;

        //    for (int i = 0; i < entitys.Count; i++)
        //    {
        //        SceneEntity se = entitys[i];
        //        if (se == null) continue;
        //        se.SetShadowVisiable(isVisable);
        //    }
        //}

        public void AddTrigger(CutsceneTrigger trigger)
        {
            if (triggered.Contains(Convert.ToInt32(trigger.CutName)))
            {
                trigger.StartMethod = StartMethod.None;
                GameObject.Destroy(trigger.gameObject);
                return;
            }

            if (cutTriggers.Contains(trigger))
            {
                return;
            }

            cutTriggers.Add(trigger);

            trigger.CutscenePaused   += pauseCutsceneEvent;
            trigger.CutsceneFinished += finishCutsceneEvent;
        }
예제 #12
0
    // Hides the dialog box and enables the plant UI again
    public void EndDialog()
    {
        //player.GetComponent<Animator>().StopPlayback(); //don't know why stop starts animations, but it does
        dialogue = false;
        paused   = false;
        dialogUI.SetActive(false);

        for (int i = 0; i < 8; i++)
        {
            uiPlants[i].enabled        = true;
            uiPlantCounters[i].enabled = true;
            uiButtonCounter[i].enabled = true;
        }

        if (cutsceneTrigger)
        {
            cutsceneTrigger.FinishCutscene();
            cutsceneTrigger = null;
        }
    }
예제 #13
0
    private void OnTriggerEnter2D(Collider2D col)
    {
        if (col.gameObject.GetComponent <TerrainPiece> () != null)
        {
            collidingPieces++;
            if (collidingPieces == this.gameObject.GetComponentsInChildren <BoxCollider2D> ().Length)
            {
                determiningCollisions.interpretEnteringCurrentTerrainTrigger(col, col.gameObject.GetComponent <TerrainPiece> ());
                beAwareOfChildColliders = true;
            }
        }
        else if (col.gameObject.GetComponent <CutsceneTrigger> () != null)
        {
            CutsceneTrigger triggeredScene = col.gameObject.GetComponent <CutsceneTrigger> ();

            if (!triggeredScene.CutsceneActivated)
            {
                triggeredScene.startCutscene();
            }
        }
    }
예제 #14
0
    /// <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();
    }
예제 #15
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);
        }
예제 #16
0
파일: Fade.cs 프로젝트: MohdAAyyad/Rostra
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space) && canGoToSurvey)
        {
            Application.OpenURL("https://docs.google.com/forms/d/1YV2OpAa3DlDGKMnicz97-1V5Shs8iR6eQgThn0fjRzE");
            Application.Quit();
        }
        if (Input.GetKeyDown(KeyCode.P))
        {
            FlipFadeToBattle();
        }

        //Fadeout or Fadein?
        if (!fadeOut)
        {
            thisImage.fillAmount -= 0.02f;

            if (thisImage.fillAmount <= 0.0f)
            {
                if (transitionIntoACutscene) //When it's a cutscene, fade in call cutscene, fade out
                {
                    transitionIntoACutscene = false;
                }
            }
        }
        else
        {
            thisImage.fillAmount += 0.02f;

            if (thisImage.fillAmount >= 1.0f)
            {
                if (transitionToBattle)
                {
                    transitionToBattle = false;
                    TransitionIntoBattle();
                    fadeOut = false;
                }
                else if (transitionToSecondBossFight)
                {
                    if (transitionOutOfACutscene == true) //If we're transitioning into another boss, chances are we've come from a cutscene
                    {
                        transitionOutOfACutscene = false;
                    }
                    transitionToSecondBossFight = false;
                    TransitionToSecondBossFight();
                    fadeOut = false;
                }
                else if (transitionToVictory)
                {
                    transitionToVictory = false;
                    TransitionIntoVictory();
                    // uiBtl.StartShowingEndScreen(true); //Show the victory screen stats now
                }
                else if (transitionToDefeat)
                {
                    transitionToDefeat = false;
                    TransitionIntoDefeat();
                    //uiBtl.StartShowingEndScreen(false); //Show the defeat screen
                }
                else if (transitionToWorldMap)
                {
                    //Debug.Log("Transition is now falseee");
                    transitionToWorldMap = false;
                    if (WMEnemy.startTutorial) //Is the fight we're in a tutorial?
                    {
                        SceneManager.UnloadSceneAsync(SceneManager.GetSceneByName("Queue Scene 2"));
                        WMEnemy.startTutorial = false;
                    }
                    else
                    {
                        SceneManager.UnloadSceneAsync(SceneManager.GetSceneByName("Queue Scene"));
                    }
                    audioManager.PlayThePreviousSong();
                    NewWMEnemy.isActive = true;
                    CutsceneManager.instance.isActive = false;
                }
                else if (transitionToEndTest)
                {
                    transitionToEndTest = false;
                    endTestPanel.gameObject.SetActive(true);
                    canGoToSurvey = true;
                }
                else if (transitionIntoACutscene)
                {
                    fadeOut = !fadeOut; //Fade out again
                                        //Debug.Log("Transition into a cutscene works");
                    if (cutsceneTriggerRef != null)
                    {
                        Debug.Log("Working");
                        cutsceneTriggerRef.TriggerCutscene(); //Load the cutscene while fading out
                        audioManager.PlayThisClip("Cutscene1");
                        cutsceneTriggerRef = null;
                    }
                }
                else if (transitionOutOfACutscene)
                {
                    fadeOut = !fadeOut;
                    CutsceneManager.instance.End();
                    transitionOutOfACutscene = false;
                    audioManager.PlayThePreviousSong();
                }
                else if (transitionToMainMenu)
                {
                    GameManager.instance.DestoryUndestroyables();
                    transitionToMainMenu = false;
                    SceneManager.LoadScene("Main Menu");
                }
            }
        }
    }