46 lines
865 B
C#
Raw Normal View History

2021-01-03 12:38:02 +00:00
using System;
using System.Collections.Generic;
using UnityEngine;
namespace Popcron
{
2021-01-04 17:31:58 +00:00
public abstract class Drawer
{
private static Dictionary<Type, Drawer> typeToDrawer = null;
2021-01-03 12:38:02 +00:00
2021-01-04 17:31:58 +00:00
public abstract int Draw(ref Vector3[] buffer, params object[] args);
2021-01-03 12:38:02 +00:00
2021-01-04 17:31:58 +00:00
public Drawer()
{
2021-01-03 12:38:02 +00:00
2021-01-04 17:31:58 +00:00
}
2021-01-03 12:38:02 +00:00
2021-01-04 17:31:58 +00:00
public static Drawer Get<T>() where T : class
{
//find all drawers
if (typeToDrawer == null)
{
2021-01-05 15:58:12 +00:00
typeToDrawer = new Dictionary<Type, Drawer>
{
2021-01-03 12:38:02 +00:00
2021-01-05 15:58:12 +00:00
//add defaults
{ typeof(CubeDrawer), new CubeDrawer() },
{ typeof(LineDrawer), new LineDrawer() },
{ typeof(PolygonDrawer), new PolygonDrawer() },
{ typeof(SquareDrawer), new SquareDrawer() },
{ typeof(FrustumDrawer), new FrustumDrawer() }
};
2021-01-04 17:31:58 +00:00
}
2021-01-03 12:38:02 +00:00
2021-01-05 15:58:12 +00:00
if (typeToDrawer.TryGetValue(typeof(T), out var drawer))
2021-01-04 17:31:58 +00:00
{
return drawer;
}
else
{
return null;
}
}
}
2021-01-03 12:38:02 +00:00
}