package funkin.graphics.rendering; import flixel.FlxStrip; import flixel.util.FlxColor; /** * Yoinked from AustinEast, thanks hopefully u dont mind me using some of ur good code * instead of my dumbass ugly code bro */ class MeshRender extends FlxStrip { public var vertex_count(default, null):Int = 0; public var index_count(default, null):Int = 0; var tri_offset:Int = 0; public function new(x, y, ?col:FlxColor = FlxColor.WHITE) { super(x, y); makeGraphic(1, 1, col); } public inline function start() { tri_offset = vertex_count; } public inline function add_vertex(x:Float, y:Float, u:Float = 0, v:Float = 0) { final pos = vertex_count << 1; vertices[pos] = x; vertices[pos + 1] = y; uvtData[pos] = u; uvtData[pos + 1] = v; vertex_count++; } public function add_tri(a:Int, b:Int, c:Int) { indices[index_count] = a + tri_offset; indices[index_count + 1] = b + tri_offset; indices[index_count + 2] = c + tri_offset; index_count += 3; } /** * * top left - a * * top right - b * * bottom left - c * * bottom right - d */ public function add_quad(ax:Float, ay:Float, bx:Float, by:Float, cx:Float, cy:Float, dx:Float, dy:Float, au:Float = 0, av:Float = 0, bu:Float = 0, bv:Float = 0, cu:Float = 0, cv:Float = 0, du:Float = 0, dv:Float = 0) { start(); // top left add_vertex(bx, by, bu, bv); // top right add_vertex(ax, ay, au, av); // bottom left add_vertex(cx, cy, cu, cv); // bottom right add_vertex(dx, dy, du, dv); add_tri(0, 1, 2); add_tri(0, 2, 3); } public function clear() { vertices.length = 0; indices.length = 0; vertex_count = 0; index_count = 0; } }