/// <summary> Load data from given asset data.</summary> /// <param name="data">Data to be loaded.</param> public void LoadData(CutsceneAsset data) { if (data == null) { return; } _enableSave = false; _baseData = null; _selectedScene = null; _scenePanels.Clear(); _scenesLine.ClearLabels(); _timeLine.ClearLabels(); _soundLine.AudioClip = null; _soundLine.AudioClipStartTime = TimeSpan.Zero; _baseData = data; _timeLine.Zoom = _baseData.Zoom; _soundLine.AudioClip = _baseData.AudioClip; _soundLine.AudioClipStartTime = new TimeSpan(_baseData.AudioClipStartTimeTicks); foreach (SceneData scene in _baseData.Scenes) { SideScenePanel panel = new SideScenePanel(scene); panel.Click += OnScenePanelClick; panel.Delete += OnScenePanelDelete; _scenePanels.Add(panel); _scenesLine.AddLabel(panel.Scene); } _timeLine.SourceListToTimeLabels(_baseData.TimeLabelsData); _timelinePanelScrollPos = _baseData.ScrollPos; _enableSave = true; initialized = true; if (EditorApplication.isPlaying) { bool cutsceneEngineFound = false; CutsceneEngine[] engines = FindObjectsOfType <CutsceneEngine>(); foreach (CutsceneEngine engine in engines) { if (engine.Cutscene.GetInstanceID() == _baseData.GetInstanceID()) { _timeLine.AssignExternalTimeFlowEngine(engine.TimeEngine); cutsceneEngineFound = true; break; } } if (!cutsceneEngineFound) { _timeLine.CreateNewEngine(new TimeSpan(_baseData.TimeTicks), new TimeSpan(_baseData.DurationTicks)); } } else { _timeLine.TimeLineEngine.SetTime(new TimeSpan(_baseData.TimeTicks)); _timeLine.TimeLineEngine.Duration = new TimeSpan(_baseData.DurationTicks); } }
void Update() { if (_isGamePlaying && !EditorApplication.isPlaying) { _timeLineVar = null; _scenesLineVar = null; _soundLineVar = null; _timeTextFieldVar = null; LoadData(_baseData); _isGamePlaying = false; } if (!_isGamePlaying && EditorApplication.isPlaying) { if (_baseData != null) { CutsceneEngine[] engines = FindObjectsOfType <CutsceneEngine>(); foreach (CutsceneEngine engine in engines) { if (engine.Cutscene.GetInstanceID() == _baseData.GetInstanceID()) { _timeLine.AssignExternalTimeFlowEngine(engine.TimeEngine); break; } } _isGamePlaying = true; } } float currentTime = Time.realtimeSinceStartup; float deltaTime = currentTime - _lastTime; if (!_timeLine.TimeLineEngineIsExternal) { _timeLine.TimeLineEngine.HandleTime(deltaTime); } _lastTime = currentTime; if (_mousePressedOnHorizontal) { _timelinePanelHeightP = 1 - _mousePosNormalized.y; if (_timelinePanelHeightP < _timelinePanelHeightPMin) { _timelinePanelHeightP = _timelinePanelHeightPMin; } if (_timelinePanelHeightP > _timelinePanelHeightPMax) { _timelinePanelHeightP = _timelinePanelHeightPMax; } } if (_mousePressedOnVertical) { _scenesPanelWidthP = 1 - _mousePosNormalized.x; if (position.width * _scenesPanelWidthP < 83) { _scenesPanelWidthP = 83 / position.width; } } bool allowDrag = (!_mousePressedOnHorizontal && !_mousePressedOnVertical) && !_mouseWasReleased; _timeLine.Update(allowDrag); _scenesLine.Update(allowDrag); _soundLine.Update(allowDrag); if (_mouseWasReleased) { _mouseWasReleased = false; } }