quantum-space-buddies/QSB/Utility/Popcron.Gizmos/Drawer.cs
Mister_Nebula ae8bf9a8b2 aaaaaaaaaa
2021-11-20 19:49:50 +00:00

41 lines
828 B
C#

using System;
using System.Collections.Generic;
using UnityEngine;
namespace Popcron
{
public abstract class Drawer
{
private static Dictionary<Type, Drawer> typeToDrawer = null;
public abstract int Draw(ref Vector3[] buffer, params object[] args);
public Drawer()
{
}
public static Drawer Get<T>() where T : class
{
//find all drawers
if (typeToDrawer == null)
{
typeToDrawer = new Dictionary<Type, Drawer>
{
//add defaults
{ typeof(CubeDrawer), new CubeDrawer() },
{ typeof(LineDrawer), new LineDrawer() },
{ typeof(PolygonDrawer), new PolygonDrawer() },
{ typeof(SquareDrawer), new SquareDrawer() },
{ typeof(FrustumDrawer), new FrustumDrawer() }
};
}
return typeToDrawer.TryGetValue(typeof(T), out var drawer)
? drawer
: null;
}
}
}