Exemplo n.º 1
0
        public void SetFrame(int index)
        {
            if (index > _maxFrame || index < 0)
            {
                return;
            }

            index = TargetModel == null ? 0 : index;

            CurrentFrame = index;

            if (stPersonToolStripMenuItem.Checked && _scn0 != null && scn0Editor._camera != null)
            {
                SCN0CameraNode       c = scn0Editor._camera;
                CameraAnimationFrame f = c.GetAnimFrame(index - 1);
                Vector3 r = f.GetRotate(index, c.Type);
                Vector3 t = f.Pos;
                ModelPanel._camera.Reset();
                ModelPanel._camera.Translate(t._x, t._y, t._z);
                ModelPanel._camera.Rotate(r._x, r._y, r._z);
                ModelPanel._aspect = f.Aspect;
                ModelPanel._farZ   = f.FarZ;
                ModelPanel._nearZ  = f.NearZ;
                ModelPanel._fovY   = f.FovY;
                ModelPanel.OnResized();
            }

            pnlPlayback.btnNextFrame.Enabled = _animFrame < _maxFrame;
            pnlPlayback.btnPrevFrame.Enabled = _animFrame > 0;

            pnlPlayback.btnLast.Enabled  = _animFrame != _maxFrame;
            pnlPlayback.btnFirst.Enabled = _animFrame > 1;

            if (_animFrame <= pnlPlayback.numFrameIndex.Maximum)
            {
                pnlPlayback.numFrameIndex.Value = _animFrame;
            }

            if (!_playing)
            {
                if (InterpolationEditor != null && InterpolationEditor.Visible)
                {
                    InterpolationEditor.Frame = CurrentFrame;
                }
                KeyframePanel.numFrame_ValueChanged();
            }
        }