Added explosions
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
using UnityEngine;
|
||||
|
||||
using TMPro;
|
||||
using System;
|
||||
|
||||
namespace MirzaBeig.CinematicExplosionsFree
|
||||
{
|
||||
[ExecuteAlways]
|
||||
public class FPSDisplay : MonoBehaviour
|
||||
{
|
||||
public float fps { get; private set; } // Frames per second (interval average).
|
||||
public float frameMS { get; private set; } // Milliseconds per frame (interval average).
|
||||
|
||||
GUIStyle style = new GUIStyle();
|
||||
|
||||
public int size = 16;
|
||||
|
||||
[Space]
|
||||
|
||||
public Vector2 position = new Vector2(16.0f, 16.0f);
|
||||
|
||||
public enum Alignment { Left, Right }
|
||||
public Alignment alignment = Alignment.Left;
|
||||
|
||||
[Space]
|
||||
|
||||
public Color colour = Color.green;
|
||||
|
||||
[Space]
|
||||
|
||||
public float updateInterval = 0.5f;
|
||||
|
||||
float elapsedIntervalTime;
|
||||
int intervalFrameCount;
|
||||
|
||||
[Space]
|
||||
|
||||
[Tooltip("Optional. Will render using GUI if not assigned.")]
|
||||
public TextMeshProUGUI textMesh;
|
||||
|
||||
// Get average FPS and frame delta (ms) for current interval (so far, if called early).
|
||||
|
||||
public float GetIntervalFPS()
|
||||
{
|
||||
// 1 / time.unscaledDeltaTime for same-frame results.
|
||||
// Same as above, but uses accumulated frameCount and deltaTime.
|
||||
|
||||
return intervalFrameCount / elapsedIntervalTime;
|
||||
}
|
||||
public float GetIntervalFrameMS()
|
||||
{
|
||||
// Calculate average frame delta during interval (time / frames).
|
||||
// Same as Time.unscaledDeltaTime * 1000.0f, using accumulation.
|
||||
|
||||
return (elapsedIntervalTime * 1000.0f) / intervalFrameCount;
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
intervalFrameCount++;
|
||||
elapsedIntervalTime += Time.unscaledDeltaTime;
|
||||
|
||||
if (elapsedIntervalTime >= updateInterval)
|
||||
{
|
||||
fps = GetIntervalFPS();
|
||||
frameMS = GetIntervalFrameMS();
|
||||
|
||||
fps = (float)Math.Round(fps, 2);
|
||||
frameMS = (float)Math.Round(frameMS, 2);
|
||||
|
||||
intervalFrameCount = 0;
|
||||
elapsedIntervalTime = 0.0f;
|
||||
}
|
||||
|
||||
if (textMesh)
|
||||
{
|
||||
textMesh.text = GetFPSText();
|
||||
}
|
||||
else
|
||||
{
|
||||
style.fontSize = size;
|
||||
style.fontStyle = FontStyle.Bold;
|
||||
style.normal.textColor = colour;
|
||||
}
|
||||
}
|
||||
|
||||
string GetFPSText()
|
||||
{
|
||||
return $"FPS: {fps:.00} ({frameMS:.00} ms)";
|
||||
}
|
||||
|
||||
void OnGUI()
|
||||
{
|
||||
string fpsText = GetFPSText();
|
||||
|
||||
if (!textMesh)
|
||||
{
|
||||
float x = position.x;
|
||||
|
||||
if (alignment == Alignment.Right)
|
||||
{
|
||||
x = Screen.width - x - style.CalcSize(new GUIContent(fpsText)).x;
|
||||
}
|
||||
|
||||
GUI.Label(new Rect(x, position.y, 200, 100), fpsText, style);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user