public void initializeScript(CutsceneTrigger currentCutscene) { playerMovement.InCutscene = true; this.currentCutscene = currentCutscene; this.currentScript = this.currentCutscene.CutsceneScript; scriptRunner = 0; }
public void TransitionIntoACutscene(CutsceneTrigger cutTrigger) { cutsceneTriggerRef = cutTrigger; fadeOut = !fadeOut; transitionIntoACutscene = true; //Debug.Log("Transition into a cutscene called"); }
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; }
public void RemoveTrigger(CutsceneTrigger trigger) { if (!cutTriggers.Contains(trigger)) { return; } cutTriggers.Remove(trigger); }
static void createCutsceneTrigger() { GameObject cutsceneTriggerGO = new GameObject("Cutscene Trigger"); CutsceneTrigger cutsceneTrigger = cutsceneTriggerGO.AddComponent <CutsceneTrigger>(); cutsceneTrigger.StartMethod = StartMethod.OnTrigger; cutsceneTriggerGO.AddComponent <BoxCollider>(); }
private void endCutscene() { inMovement = false; inDialogue = false; inAction = false; currentCutscene = null; dialogueController.endCutsceneDialogue(); playerMovement.InCutscene = false; Destroy(currentCutscene); }
/// <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(); }
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; }
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); }
//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; }
// 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; } }
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(); } } }
/// <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(); }
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); }
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"); } } } }