void onClick_DeleteCutsceneButton(MyGuiControlButton sender) { var cutscenes = MySession.Static.GetComponent<MySessionComponentCutscenes>(); if (m_selectedCutscene != null) { cutscenes.GetCutscenes().Remove(m_selectedCutscene.Name); m_comboCutscenes.RemoveItem(m_selectedCutscene.Name.GetHashCode()); if (cutscenes.GetCutscenes().Count == 0) m_selectedCutscene = null; else m_comboCutscenes.SelectItemByIndex(cutscenes.GetCutscenes().Count - 1); } }
public bool PlayCutscene(string cutsceneName) { MySandboxGame.Log.WriteLineAndConsole("Cutscene start: " + cutsceneName); if (m_cutsceneLibrary.ContainsKey(cutsceneName)) { if (IsCutsceneRunning) CutsceneEnd(false); else m_origHud = MyHud.MinimalHud; m_currentCutscene = m_cutsceneLibrary[cutsceneName]; m_currentNode = null; m_currentNodeIndex = 0; m_currentTime = 0; m_nodeActivated = false; m_lookTarget = null; m_attachedPositionTo = null; m_attachedRotationTo = null; m_rotateTarget = null; m_moveTarget = null; m_currentFOV = MathHelper.Clamp(m_currentCutscene.StartingFOV, MINIMUM_FOV, MAXIMUM_FOV); MyGuiScreenGamePlay.DisableInput = true; if (MyCubeBuilder.Static.IsActivated) MyCubeBuilder.Static.Deactivate(); MyHud.MinimalHud = true; MatrixD startMatrix = MatrixD.Identity; MyEntity entity = m_currentCutscene.StartEntity.Length > 0 ? MyVisualScriptLogicProvider.GetEntityByName(m_currentCutscene.StartEntity) : null; if (entity != null) startMatrix = entity.WorldMatrix; if (m_currentCutscene.StartLookAt.Length > 0 && !m_currentCutscene.StartLookAt.Equals(m_currentCutscene.StartEntity)) { entity = MyVisualScriptLogicProvider.GetEntityByName(m_currentCutscene.StartLookAt); if (entity != null) startMatrix = MatrixD.CreateLookAtInverse(startMatrix.Translation, entity.PositionComp.GetPosition(), startMatrix.Up); } m_nodeStartMatrix = startMatrix; m_currentCameraMatrix = startMatrix; m_originalCameraController = MySession.Static.CameraController; m_cameraEntity.WorldMatrix = startMatrix; MySession.Static.SetCameraController(MyCameraControllerEnum.Entity, m_cameraEntity); return true; } else { Debug.Fail("There is no cutscene named \"" + cutsceneName + "\"."); return false; } }
void m_comboCutscenes_ItemSelected() { m_selectedCutscene = MySession.Static.GetComponent<MySessionComponentCutscenes>().GetCutscene(m_comboCutscenes.GetSelectedValue().ToString()); m_comboNodes.ClearItems(); if (m_selectedCutscene.SequenceNodes != null) { int i = 0; foreach (var node in m_selectedCutscene.SequenceNodes) { m_comboNodes.AddItem(i, node.Time.ToString()); i++; } } if (m_comboNodes.GetItemsCount() > 0) m_comboNodes.SelectItemByIndex(0); }
public void CutsceneEnd(bool releaseCamera = true) { if (m_currentCutscene != null) { if (MyVisualScriptLogicProvider.CutsceneEnded != null) MyVisualScriptLogicProvider.CutsceneEnded(m_currentCutscene.Name); m_currentCutscene = null; if (releaseCamera) { MySession.Static.SetCameraController(MyCameraControllerEnum.Entity, MySession.Static.ControlledEntity.Entity); MyHud.MinimalHud = m_origHud; MyGuiScreenGamePlay.DisableInput = false; } } }