mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-01 11:15:33 +00:00
Debug addon and removed old scaling
This commit is contained in:
parent
ed502eb061
commit
ca85765ca2
16 changed files with 1637 additions and 11 deletions
148
addons/DebugGUI/Examples/DebugGUIExamples.cs
Normal file
148
addons/DebugGUI/Examples/DebugGUIExamples.cs
Normal file
|
|
@ -0,0 +1,148 @@
|
|||
using Godot;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
public partial class DebugGUIExamples : Node
|
||||
{
|
||||
/* * * *
|
||||
*
|
||||
* [DebugGUIGraph]
|
||||
* Renders the variable in a graph on-screen. Attribute based graphs will updates every _Process.
|
||||
* Lets you optionally define:
|
||||
* max, min - The range of displayed values
|
||||
* r, g, b - The RGB color of the graph (0~1)
|
||||
* group - Graphs can be grouped into the same window and overlaid
|
||||
* autoScale - If true the graph will readjust min/max to fit the data
|
||||
*
|
||||
* [DebugGUIPrint]
|
||||
* Draws the current variable continuously on-screen as
|
||||
* $"{GameObject name} {variable name}: {value}"
|
||||
*
|
||||
* For more control, these features can be accessed manually.
|
||||
* DebugGUI.SetGraphProperties(key, ...) - Set the properties of the graph with the provided key
|
||||
* DebugGUI.Graph(key, value) - Push a value to the graph
|
||||
* DebugGUI.LogPersistent(key, value) - Print a persistent log entry on screen
|
||||
* DebugGUI.Log(value) - Print a temporary log entry on screen
|
||||
*
|
||||
* See DebugGUI.cs for more info
|
||||
*
|
||||
* * * */
|
||||
|
||||
// Disable Field Unused warning
|
||||
#pragma warning disable 0414
|
||||
|
||||
// Works with regular fields
|
||||
[DebugGUIGraph(min: -1, max: 1, r: 0, g: 1, b: 0, autoScale: true)]
|
||||
float SinField;
|
||||
|
||||
// As well as properties
|
||||
[DebugGUIGraph(min: -1, max: 1, r: 0, g: 1, b: 1, autoScale: true)]
|
||||
float CosProperty { get { return Mathf.Cos(time * 6); } }
|
||||
|
||||
// Also works for expression-bodied properties
|
||||
[DebugGUIGraph(min: -1, max: 1, r: 1, g: 0.3f, b: 1)]
|
||||
float SinProperty => Mathf.Sin((time + Mathf.Pi / 2) * 6);
|
||||
|
||||
// User inputs, print and graph in one!
|
||||
[DebugGUIPrint, DebugGUIGraph(group: 1, r: 1, g: 0.3f, b: 0.3f)]
|
||||
float mouseX;
|
||||
[DebugGUIPrint, DebugGUIGraph(group: 1, r: 0, g: 1, b: 0)]
|
||||
float mouseY;
|
||||
|
||||
Queue<double> deltaTimeBuffer = new();
|
||||
double smoothDeltaTime => deltaTimeBuffer.Sum() / deltaTimeBuffer.Count;
|
||||
float time;
|
||||
float physicsTime;
|
||||
bool wasMouseDown;
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
|
||||
// Init smooth DT
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
deltaTimeBuffer.Enqueue(0);
|
||||
}
|
||||
|
||||
// Log (as opposed to LogPersistent) will disappear automatically after some time.
|
||||
DebugGUI.Log("Hello! I will disappear after some time!");
|
||||
|
||||
// Set up graph properties using our graph keys
|
||||
DebugGUI.SetGraphProperties("smoothFrameRate", "SmoothFPS", 0, 200, 2, new Color(0, 1, 1), false);
|
||||
DebugGUI.SetGraphProperties("frameRate", "FPS", 0, 200, 2, new Color(1, 0.5f, 1), false);
|
||||
DebugGUI.SetGraphProperties("fixedFrameRateSin", "FixedSin", -1, 1, 3, new Color(1, 1, 0), true);
|
||||
}
|
||||
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
time += (float)delta;
|
||||
|
||||
// Update smooth delta time queue
|
||||
deltaTimeBuffer.Dequeue();
|
||||
deltaTimeBuffer.Enqueue(delta);
|
||||
|
||||
// Update the fields our attributes are graphing
|
||||
SinField = Mathf.Sin(time * 6);
|
||||
|
||||
// Update graphed mouse XY values
|
||||
var mousePos = GetViewport().GetMousePosition();
|
||||
var viewportRect = GetViewport().GetVisibleRect();
|
||||
mouseX = Mathf.Clamp(mousePos.X, 0, viewportRect.Size.X);
|
||||
mouseY = Mathf.Clamp(mousePos.Y, 0, viewportRect.Size.Y);
|
||||
|
||||
// Manual persistent logging
|
||||
DebugGUI.LogPersistent("smoothFrameRate", "SmoothFPS: " + (1 / smoothDeltaTime).ToString("F3"));
|
||||
DebugGUI.LogPersistent("frameRate", "FPS: " + (1 / delta).ToString("F3"));
|
||||
|
||||
// Manual logging of mouse clicks
|
||||
if (Input.IsMouseButtonPressed(MouseButton.Left))
|
||||
{
|
||||
if (!wasMouseDown)
|
||||
{
|
||||
wasMouseDown = true;
|
||||
DebugGUI.Log(string.Format(
|
||||
"Mouse down ({0}, {1})",
|
||||
mouseX.ToString("F3"),
|
||||
mouseY.ToString("F3")
|
||||
));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
wasMouseDown = false;
|
||||
}
|
||||
|
||||
if (smoothDeltaTime != 0)
|
||||
{
|
||||
DebugGUI.Graph("smoothFrameRate", 1 / (float)smoothDeltaTime);
|
||||
}
|
||||
if (delta != 0)
|
||||
{
|
||||
DebugGUI.Graph("frameRate", 1 / (float)delta);
|
||||
}
|
||||
|
||||
if (Input.IsKeyPressed(Key.Space))
|
||||
{
|
||||
QueueFree();
|
||||
}
|
||||
}
|
||||
|
||||
public override void _PhysicsProcess(double delta)
|
||||
{
|
||||
physicsTime += (float)delta;
|
||||
|
||||
// Manual graphing
|
||||
DebugGUI.Graph("fixedFrameRateSin", Mathf.Sin(physicsTime * 6));
|
||||
}
|
||||
|
||||
public override void _ExitTree()
|
||||
{
|
||||
// Clean up our logs and graphs when this object leaves tree
|
||||
DebugGUI.RemoveGraph("frameRate");
|
||||
DebugGUI.RemoveGraph("fixedFrameRateSin");
|
||||
DebugGUI.RemoveGraph("smoothFrameRate");
|
||||
|
||||
DebugGUI.RemovePersistent("frameRate");
|
||||
DebugGUI.RemovePersistent("smoothFrameRate");
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue