reorganize
This commit is contained in:
185
Source/Game/Hud/FpsScript.cs
Normal file
185
Source/Game/Hud/FpsScript.cs
Normal file
@@ -0,0 +1,185 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using FlaxEditor.Content.Settings;
|
||||
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;
|
||||
double updateAccumTime = 0.0;
|
||||
|
||||
Stopwatch sw2;
|
||||
double drawTimeAvg = 0.0;
|
||||
ulong drawTimeCount;
|
||||
const double drawInterval = 0.25;
|
||||
double drawAccumTime = 0.0;
|
||||
|
||||
Stopwatch sw3;
|
||||
double physicsTimeAvg = 0.0;
|
||||
ulong physicsTimeCount;
|
||||
const double physicsInterval = 0.25;
|
||||
double physicsAccumTime = 0.0;
|
||||
|
||||
Stopwatch sw0;
|
||||
|
||||
string currentRenderer = "Unknown";
|
||||
|
||||
RenderTask t;
|
||||
|
||||
TimeSettings timeSettings;
|
||||
|
||||
public override void OnAwake()
|
||||
{
|
||||
label = (Label) control.Control;
|
||||
|
||||
sw = Stopwatch.StartNew();
|
||||
sw2 = Stopwatch.StartNew();
|
||||
sw3 = Stopwatch.StartNew();
|
||||
sw0 = Stopwatch.StartNew();
|
||||
|
||||
currentRenderer = GPUDevice.Instance.RendererType.ToString();
|
||||
|
||||
if (t == null)
|
||||
{
|
||||
//Destroy(t);
|
||||
t = new RenderTask();
|
||||
t.Render += OnDraw;
|
||||
}
|
||||
|
||||
var settings = FlaxEditor.Content.Settings.GameSettings.Load();
|
||||
timeSettings = settings.Time.CreateInstance<FlaxEditor.Content.Settings.TimeSettings>();
|
||||
}
|
||||
|
||||
public override void OnDestroy()
|
||||
{
|
||||
Destroy(t);
|
||||
t = null;
|
||||
}
|
||||
|
||||
double conTime = 0.0;
|
||||
|
||||
public override void OnUpdate()
|
||||
{
|
||||
updateAccumTime += Time.DeltaTime;
|
||||
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;
|
||||
}
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.Append("eFPS: " + Engine.FramesPerSecond);
|
||||
sb.Append(" uTime: " + sw0.Elapsed.TotalSeconds);
|
||||
sb.Append("\nuFPS: " + ((int) Math.Round(1.0f / updateTimeAvg)));
|
||||
sb.Append(" uTime: " + updateAccumTime);
|
||||
sb.Append("\nrFPS: " + ((int) Math.Round(1.0f / drawTimeAvg)));
|
||||
sb.Append(" rTime: " + drawAccumTime);
|
||||
sb.Append("\npFPS: " + ((int) Math.Round(1.0f / physicsTimeAvg)));
|
||||
sb.Append(" pTime: " + physicsAccumTime);
|
||||
//sb.Append("\nCon: " + conTime.ToString() + "ms");
|
||||
//sb.Append("\nGC memory: " + (GC.GetTotalMemory(false) / 1000000.0f).ToString() + "MB");
|
||||
//sb.Append("\nUpdate profiler: " + updateProfTime.ToString() + "ms");
|
||||
|
||||
#if false
|
||||
#if BUILD_DEVELOPMENT
|
||||
var nameOffset = Marshal.OffsetOf(typeof(ProfilerCPU.Event), "Name0");
|
||||
foreach (var eventsCpu in FlaxEngine.ProfilingTools.EventsCPU)
|
||||
{
|
||||
sb.Append("\nName: " + eventsCpu.Name + " ");
|
||||
foreach (var eventt in eventsCpu.Events)
|
||||
{
|
||||
#if FLAX_EDITOR
|
||||
string eventName = eventt.Name;
|
||||
#else
|
||||
string eventName;
|
||||
unsafe
|
||||
{
|
||||
var ptr1 = &eventt;
|
||||
char* ptr2 = (char*)(new IntPtr((byte*)ptr1 + nameOffset.ToInt64()));
|
||||
//fixed (char* name = &eventt)
|
||||
{
|
||||
eventName = new string(ptr2);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
sb.Append(eventName + " " + (eventt.End-eventt.Start) + "ms, ");
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
((Label) control.Control).Text = sb.ToString();
|
||||
/*if (!Platform.HasFocus)
|
||||
{
|
||||
Time.UpdateFPS = 15;
|
||||
Time.DrawFPS = 15;
|
||||
Time.PhysicsFPS = 15;
|
||||
}
|
||||
#if FLAX_EDITOR
|
||||
else if (!FlaxEditor.Editor.IsPlayMode)
|
||||
{
|
||||
var editorFPS = FlaxEditor.Editor.Instance.Options.Options.General.EditorFPS;
|
||||
Time.UpdateFPS = editorFPS;
|
||||
Time.DrawFPS = editorFPS;
|
||||
Time.PhysicsFPS = timeSettings.PhysicsFPS;
|
||||
}
|
||||
#endif
|
||||
else
|
||||
{
|
||||
Time.UpdateFPS = timeSettings.UpdateFPS;
|
||||
Time.DrawFPS = timeSettings.DrawFPS;
|
||||
Time.PhysicsFPS = timeSettings.PhysicsFPS;
|
||||
}*/
|
||||
}
|
||||
|
||||
public override void OnFixedUpdate()
|
||||
{
|
||||
physicsAccumTime += Time.DeltaTime;
|
||||
physicsTimeCount++;
|
||||
double elapsed = sw3.Elapsed.TotalSeconds;
|
||||
if (elapsed >= physicsInterval)
|
||||
{
|
||||
sw3.Restart();
|
||||
physicsTimeAvg = elapsed / physicsTimeCount;
|
||||
physicsTimeCount = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void OnDraw(RenderTask tt, GPUContext context)
|
||||
{
|
||||
drawAccumTime += Time.DeltaTime;
|
||||
drawTimeCount++;
|
||||
double elapsed = sw2.Elapsed.TotalSeconds;
|
||||
if (elapsed >= drawInterval)
|
||||
{
|
||||
sw2.Restart();
|
||||
drawTimeAvg = elapsed / drawTimeCount;
|
||||
drawTimeCount = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user