public void BuildPlotmodel(ISession session, IPlotSettings plotSettings, double startTime, double endTime, ERemoveOutlierMethod eRemoveOutlinerMethod, Action <PlotModel> onFinishAction = null) { var plotModel = PlotModel; Reset(); if (session == null) { return; } plotModel.Axes.Add(AxisDefinitions[EPlotAxis.XAXIS]); plotModel.Axes.Add(AxisDefinitions[EPlotAxis.YAXISFRAMETIMES]); SetFrametimeChart(plotModel, session.GetFrametimePointsTimeWindow(startTime, endTime, _frametimeStatisticProviderOptions, eRemoveOutlinerMethod)); if (plotSettings.IsAnyGraphVisible && session.HasValidSensorData()) { plotModel.Axes.Add(AxisDefinitions[EPlotAxis.YAXISPERCENTAGE]); if (plotSettings.ShowGpuLoad) { SetGPULoadChart(plotModel, session.GetGPULoadPointTimeWindow()); } if (plotSettings.ShowCpuLoad) { SetCPULoadChart(plotModel, session.GetCPULoadPointTimeWindow()); } if (plotSettings.ShowCpuMaxThreadLoad) { SetCPUMaxThreadLoadChart(plotModel, session.GetCPUMaxThreadLoadPointTimeWindow()); } if (plotSettings.ShowGpuPowerLimit) { SetGpuPowerLimitChart(plotModel, session.GetGpuPowerLimitPointTimeWindow()); } } onFinishAction?.Invoke(plotModel); plotModel.InvalidatePlot(true); }
public void BuildPlotmodel(ISession session, IPlotSettings plotSettings, double startTime, double endTime, ERemoveOutlierMethod eRemoveOutlinerMethod, EFilterMode filterMode, Action <PlotModel> onFinishAction = null) { var plotModel = PlotModel; Reset(); if (session == null) { return; } plotModel.Axes.Add(AxisDefinitions[EPlotAxis.XAXIS]); plotModel.Axes.Add(AxisDefinitions[EPlotAxis.YAXISFPS]); var frametimes = session.GetFrametimeTimeWindow(startTime, endTime, _frametimeStatisticProviderOptions, eRemoveOutlinerMethod); double average = frametimes.Count * 1000 / frametimes.Sum(); double yMin, yMax; plotModel.Series.Clear(); var rawFpsPoints = session.GetFpsPointsTimeWindow(startTime, endTime, _frametimeStatisticProviderOptions, eRemoveOutlinerMethod, EFilterMode.None); if (filterMode is EFilterMode.RawPlusAverage) { var avgFpsPoints = session.GetFpsPointsTimeWindow(startTime, endTime, _frametimeStatisticProviderOptions, eRemoveOutlinerMethod, EFilterMode.TimeIntervalAverage); SetRawFPS(plotModel, rawFpsPoints); SetFpsChart(plotModel, avgFpsPoints, rawFpsPoints, average, 2, OxyColor.FromRgb(241, 125, 32)); yMin = rawFpsPoints.Min(pnt => pnt.Y); yMax = rawFpsPoints.Max(pnt => pnt.Y); } else { var fpsPoints = session.GetFpsPointsTimeWindow(startTime, endTime, _frametimeStatisticProviderOptions, eRemoveOutlinerMethod, filterMode); SetFpsChart(plotModel, fpsPoints, rawFpsPoints, average, filterMode is EFilterMode.None ? 1 : 2, Constants.FpsStroke); yMin = fpsPoints.Min(pnt => pnt.Y); yMax = fpsPoints.Max(pnt => pnt.Y); } UpdateYAxisMinMaxBorders(yMin, yMax, average); if (plotSettings.IsAnyGraphVisible && session.HasValidSensorData()) { plotModel.Axes.Add(AxisDefinitions[EPlotAxis.YAXISPERCENTAGE]); if (plotSettings.ShowGpuLoad) { SetGPULoadChart(plotModel, session.GetGPULoadPointTimeWindow()); } if (plotSettings.ShowCpuLoad) { SetCPULoadChart(plotModel, session.GetCPULoadPointTimeWindow()); } if (plotSettings.ShowCpuMaxThreadLoad) { SetCPUMaxThreadLoadChart(plotModel, session.GetCPUMaxThreadLoadPointTimeWindow()); } if (plotSettings.ShowGpuPowerLimit) { SetGpuPowerLimitChart(plotModel, session.GetGpuPowerLimitPointTimeWindow()); } } onFinishAction?.Invoke(plotModel); plotModel.InvalidatePlot(true); }