import enum gameDebugViewETextAlignment
{
	Left,
	Right,
	Center,
}

importonly abstract class gameIDebugVisualizerSystem extends IGameSystem
{
}

importonly final class DebugVisualizerSystem extends gameIDebugVisualizerSystem
{
	public import function DrawRect( position : Vector4, size : Vector4, optional color : Color, optional lifetime : Float ) : Uint32;
	public import function DrawLine( start : Vector4, end : Vector4, optional color : Color, optional lifetime : Float ) : Uint32;
	public import function DrawLine3D( start : Vector4, end : Vector4, optional color : Color, optional lifetime : Float ) : Uint32;
	public import function DrawText( position : Vector4, text : String, optional textAlignment : gameDebugViewETextAlignment, optional color : Color, optional lifetime : Float ) : Uint32;
	public import function DrawText3D( position : Vector4, text : String, optional color : Color, optional lifetime : Float ) : Uint32;
	public import function DrawWireBox( boxMin : Vector4, boxMax : Vector4, optional color : Color, optional lifetime : Float ) : Uint32;
	public import function DrawWireSphere( position : Vector4, radius : Float, optional color : Color, optional lifetime : Float ) : Uint32;
	public import function DrawArrow( start : Vector4, end : Vector4, optional color : Color, optional lifetime : Float ) : Uint32;
	public import function ClearAll();
	public import function ClearLayer( layerId : Uint32 );
	public import function SetPosition( layerId : Uint32, position : Vector4 );
	public import function SetScale( layerId : Uint32, scale : Vector4 );
}

importonly abstract class IDebugDrawHistorySystem extends IGameSystem
{
	public import function DrawWireSphere( position : Vector4, radius : Float, optional color : Color, tag : String );
	public import function DrawArrow( position : Vector4, direction : Vector4, optional color : Color, tag : String );
}

