3 Commits

Author SHA1 Message Date
omegaleo f765becf06 added an instacedobject class 2025-01-17 15:05:52 +00:00
omegaleo 9acc18e1fa Added new method for BenchmarkUtility.cs 2025-01-13 12:16:18 +00:00
omegaleo 7125bbc537 Added IndexOf to NeoDictionary.cs 2025-01-09 23:33:36 +00:00
3 changed files with 53 additions and 0 deletions
@@ -36,6 +36,25 @@ namespace GameDevLibrary.Helpers
return stopwatch.ElapsedMilliseconds; return stopwatch.ElapsedMilliseconds;
} }
public static long RecordAndSaveToResults(string key, Action actionToRecord)
{
var stopwatch = new Stopwatch();
stopwatch.Start();
actionToRecord.Invoke();
stopwatch.Stop();
if (!_benchmarks.ContainsKey(key))
{
_benchmarks[key] = new List<long>();
}
_benchmarks[key].Add(stopwatch.ElapsedMilliseconds);
return stopwatch.ElapsedMilliseconds;
}
public static void Start(string key) public static void Start(string key)
{ {
GetStopwatch(key).Restart(); GetStopwatch(key).Restart();
@@ -0,0 +1,31 @@
using System;
namespace GameDevLibrary.Models
{
public abstract class InstancedObject<T> where T : class
{
public static T Instance { get; private set; }
protected InstancedObject()
{
if (Instance != null)
{
throw new InvalidOperationException($"An instance of {typeof(T).Name} already exists.");
}
Instance = this as T;
if (Instance == null)
{
throw new InvalidOperationException($"Failed to cast {GetType().Name} to {typeof(T).Name}.");
}
}
~InstancedObject()
{
if (Instance == this)
{
Instance = null;
}
}
}
}
@@ -84,6 +84,9 @@ namespace GameDevLibrary.Models
public IEnumerable<NeoDictionaryItem<TKey, TValue>> Select(Func<NeoDictionaryItem<TKey, TValue>, NeoDictionaryItem<TKey, TValue>> selector) => public IEnumerable<NeoDictionaryItem<TKey, TValue>> Select(Func<NeoDictionaryItem<TKey, TValue>, NeoDictionaryItem<TKey, TValue>> selector) =>
Items.Select(selector); Items.Select(selector);
public int IndexOf(NeoDictionaryItem<TKey, TValue> selector) =>
Items.IndexOf(selector);
public void Remove(TKey key) public void Remove(TKey key)
{ {