Add Shader:hasUniform;

This commit is contained in:
bjorn 2017-10-22 15:58:56 -07:00
parent 076b378b80
commit 2efe619317
1 changed files with 9 additions and 3 deletions

View File

@ -10,6 +10,13 @@ struct TempData {
static struct TempData tempData; static struct TempData tempData;
int l_lovrShaderHasUniform(lua_State* L) {
Shader* shader = luax_checktype(L, 1, Shader);
const char* name = luaL_checkstring(L, 2);
lua_pushboolean(L, lovrShaderGetUniform(shader, name) != NULL);
return 1;
}
int l_lovrShaderSend(lua_State* L) { int l_lovrShaderSend(lua_State* L) {
Shader* shader = luax_checktype(L, 1, Shader); Shader* shader = luax_checktype(L, 1, Shader);
const char* name = luaL_checkstring(L, 2); const char* name = luaL_checkstring(L, 2);
@ -21,9 +28,7 @@ int l_lovrShaderSend(lua_State* L) {
return luaL_error(L, "Unknown shader variable '%s'", name); return luaL_error(L, "Unknown shader variable '%s'", name);
} }
if (!tempData.data) { if (tempData.size < uniform->size) {
tempData.data = malloc(uniform->size);
} else if (tempData.size < uniform->size) {
tempData.size = uniform->size; tempData.size = uniform->size;
tempData.data = realloc(tempData.data, tempData.size); tempData.data = realloc(tempData.data, tempData.size);
} }
@ -136,6 +141,7 @@ int l_lovrShaderSend(lua_State* L) {
} }
const luaL_Reg lovrShader[] = { const luaL_Reg lovrShader[] = {
{ "hasUniform", l_lovrShaderHasUniform },
{ "send", l_lovrShaderSend }, { "send", l_lovrShaderSend },
{ NULL, NULL } { NULL, NULL }
}; };