1
0
algoru-labs/Lab4/ScoreHistWindow.cs

60 lines
1.5 KiB
C#

using ImGuiNET;
namespace Lab4
{
internal class ScoreHistWindow
{
public ImFontPtr font1;
MainWindow win;
float[] dataPoints;
float timer = 0;
float lastSampleTime = -1;
float sampleInterval = 0.1f;
public ScoreHistWindow(MainWindow win)
{
this.win = win;
dataPoints = new float[100];
}
public void Reset()
{
dataPoints = new float[100];
timer = 0;
lastSampleTime = -1;
}
public unsafe void Update(float dt)
{
if (win.isIterationRunning && !win.iterationPaused)
{
timer += dt;
if (timer - lastSampleTime > sampleInterval)
{
for (int i = 0; i < dataPoints.Length-1; i++)
{
dataPoints[i] = dataPoints[i + 1];
}
dataPoints[dataPoints.Length - 1] = (float)win.bestScore;
lastSampleTime = timer;
}
}
ImGui.PushFont(font1);
if (ImGui.Begin("Score histogram", ImGuiWindowFlags.None))
{
ImGui.PlotLines("", ref dataPoints[0], dataPoints.Length, 0, null, 10_000f, 50_000f, new System.Numerics.Vector2(0, 180.0f));
ImGui.Spacing();
ImGui.End();
}
ImGui.PopFont();
}
}
}