protected virtual void OnDrawPrepare(FrameStageControllerEventArgs args) { DrawPrepare?.Invoke(this, args); }
protected virtual void OnProcessingRawInput(FrameStageControllerEventArgs args) { ProcessingRawInput?.Invoke(this, args); }
private void ProcessInput(FrameStageControllerEventArgs args) { OnProcessingRawInput(args); }
public void AdvanceFrame() { if (_frameIndex > 0) { _currFrameTimerValue = (ulong)_systemTimer.ElapsedTicks; _timeSinceLastFrame = (ulong)((_currFrameTimerValue - _lastFrameTimeValue) * SystemTimerResolution); _totalFrameTime += _timeSinceLastFrame; } FrameStageControllerEventArgs args = new FrameStageControllerEventArgs(CurrentTime); FrameStarted = true; OnFrameStart(CurrentTime); ProcessInput(args); if (args.AbortExecution) { AbortFlag = true; return; } if (AutoClearFrames) { ClearBuffer(); OnBufferClear(CurrentTime); } if (AutoEventPolling) { ProcessEvents(); } OnDrawPrepare(args); if (args.AbortExecution) { AbortFlag = true; return; } if (args.SkipFrame) { _frameIndex++; _lastFrameTimeValue = _currFrameTimerValue; _framesSkipped++; return; } OnDraw(CurrentTime); OnDrawEnd(CurrentTime); FrameStarted = false; SwapBuffers(); OnBufferSwap(CurrentTime); OnFrameEnd(CurrentTime); ActiveShaderProgram = null; SleepThread(); _frameIndex++; _lastFrameTimeValue = _currFrameTimerValue; }
protected virtual void Renderer_DrawPrepare(RenderThread sender, FrameStageControllerEventArgs args) { }
protected virtual void Renderer_ProcessingRawInput(RenderThread sender, FrameStageControllerEventArgs args) { }