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(); } }