WIP
This commit is contained in:
87
Source/Game/Cabrito/FpsScript.cs
Normal file
87
Source/Game/Cabrito/FpsScript.cs
Normal file
@@ -0,0 +1,87 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using FlaxEngine;
|
||||
using FlaxEngine.GUI;
|
||||
|
||||
namespace Cabrito
|
||||
{
|
||||
[ExecuteInEditMode]
|
||||
public class FpsScript : Script
|
||||
{
|
||||
public UIControl control;
|
||||
Label label;
|
||||
|
||||
Stopwatch sw;
|
||||
double updateTimeAvg = 0.0;
|
||||
ulong updateTimeCount;
|
||||
const double updateInterval = 0.25;
|
||||
|
||||
Stopwatch sw2;
|
||||
double drawTimeAvg = 0.0;
|
||||
ulong drawTimeCount;
|
||||
const double drawInterval = 0.25;
|
||||
|
||||
string currentRenderer = "Unknown";
|
||||
|
||||
RenderTask t;
|
||||
|
||||
public override void OnAwake()
|
||||
{
|
||||
label = (Label)control.Control;
|
||||
|
||||
sw = Stopwatch.StartNew();
|
||||
|
||||
currentRenderer = GPUDevice.Instance.RendererType.ToString();
|
||||
|
||||
sw2 = Stopwatch.StartNew();
|
||||
if (t == null)
|
||||
{
|
||||
//Destroy(t);
|
||||
t = new RenderTask();
|
||||
t.Render += OnDraw;
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnDestroy()
|
||||
{
|
||||
Destroy(t);
|
||||
t = null;
|
||||
}
|
||||
|
||||
double conTime = 0.0;
|
||||
public override void OnUpdate()
|
||||
{
|
||||
updateTimeCount++;
|
||||
double elapsed = sw.Elapsed.TotalSeconds;
|
||||
if (elapsed >= updateInterval)
|
||||
{
|
||||
sw.Restart();
|
||||
updateTimeAvg = elapsed / updateTimeCount;
|
||||
updateTimeCount = 0;
|
||||
|
||||
conTime = ((ConsoleContentTextBox.accumDrawTime / ConsoleContentTextBox.accumDrawTimes) * 1000.0);
|
||||
ConsoleContentTextBox.accumDrawTime = 0.0;
|
||||
ConsoleContentTextBox.accumDrawTimes = 0;
|
||||
}
|
||||
|
||||
((Label)control.Control).Text = "FPS: " + ((int)Math.Round(1.0f / updateTimeAvg)).ToString();
|
||||
label.Text += "\nrFPS: " + ((int)Math.Round(1.0f / drawTimeAvg)).ToString();
|
||||
label.Text += "\nCon: " + conTime.ToString() + "ms";
|
||||
label.Text += "\n" + currentRenderer;
|
||||
label.Text += "\nGC memory: " + (GC.GetTotalMemory(false)/1000000.0f).ToString() + "MB";
|
||||
}
|
||||
|
||||
void OnDraw(RenderTask tt, GPUContext context)
|
||||
{
|
||||
drawTimeCount++;
|
||||
double elapsed = sw2.Elapsed.TotalSeconds;
|
||||
if (elapsed >= drawInterval)
|
||||
{
|
||||
sw2.Restart();
|
||||
drawTimeAvg = elapsed / drawTimeCount;
|
||||
drawTimeCount = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user