Added Mesh:setDrawRange(min, max) and Mesh:getDrawRange().

If no vertex map is set, this restricts the drawn vertices to those whose indices in the vertex array are between [min, max] inclusive.
If a vertex map is set, this restricts the values used in the vertex map to those whose indices in the vertex map array are between [min, max] inclusive.

Added Mesh constructor variant: love.graphics.newMesh(vertexcount, texture, drawmode). Creates a Mesh with a certain number of vertices with x,y,u,v,r,g,b,a values of (0,0,0,0,255,255,255,255).
This commit is contained in:
Alex Szpakowski
2014-01-21 06:16:47 -04:00
parent 73f1ce0d40
commit ba7e69d776
7 changed files with 191 additions and 54 deletions
+34
View File
@@ -315,6 +315,38 @@ int w_Mesh_getDrawMode(lua_State *L)
return 1;
}
int w_Mesh_setDrawRange(lua_State *L)
{
Mesh *t = luax_checkmesh(L, 1);
if (lua_isnoneornil(L, 2))
t->setDrawRange();
else
{
int rangemin = luaL_checkint(L, 2) - 1;
int rangemax = luaL_checkint(L, 3) - 1;
EXCEPT_GUARD(t->setDrawRange(rangemin, rangemax);)
}
return 0;
}
int w_Mesh_getDrawRange(lua_State *L)
{
Mesh *t = luax_checkmesh(L, 1);
int rangemin = -1;
int rangemax = -1;
t->getDrawRange(rangemin, rangemax);
if (rangemin < 0 || rangemax < 0)
return 0;
lua_pushinteger(L, rangemin + 1);
lua_pushinteger(L, rangemax + 1);
return 2;
}
int w_Mesh_setVertexColors(lua_State *L)
{
Mesh *t = luax_checkmesh(L, 1);
@@ -358,6 +390,8 @@ static const luaL_Reg functions[] =
{ "getTexture", w_Mesh_getTexture },
{ "setDrawMode", w_Mesh_setDrawMode },
{ "getDrawMode", w_Mesh_getDrawMode },
{ "setDrawRange", w_Mesh_setDrawRange },
{ "getDrawRange", w_Mesh_getDrawRange },
{ "setVertexColors", w_Mesh_setVertexColors },
{ "hasVertexColors", w_Mesh_hasVertexColors },
{ "setWireframe", w_Mesh_setWireframe },