コード例 #1
0
        /// <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);
            }
        }
コード例 #2
0
        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;
            }
        }