Improve uniform error messages;

This commit is contained in:
bjorn 2018-07-31 23:07:28 -07:00
parent 4589ce66d0
commit ce19599fec
1 changed files with 8 additions and 8 deletions

View File

@ -27,17 +27,18 @@ int luax_checkuniform(lua_State* L, int index, const Uniform* uniform, void* des
case UNIFORM_FLOAT: case UNIFORM_FLOAT:
case UNIFORM_MATRIX: case UNIFORM_MATRIX:
capacity = blob->size / sizeof(float); capacity = blob->size / sizeof(float);
lovrAssert(capacity >= elements, "Blob can only hold %d float%s, at least %d needed", capacity, s, elements); lovrAssert(capacity >= elements, "Blob can only hold %d float%s, at least %d needed for uniform '%s'", capacity, s, elements, debug);
memcpy(dest, blob->data, elements * sizeof(float)); memcpy(dest, blob->data, elements * sizeof(float));
break; break;
case UNIFORM_INT: case UNIFORM_INT:
capacity = blob->size / sizeof(int); capacity = blob->size / sizeof(int);
lovrAssert(capacity >= elements, "Blob can only hold %d int%s, at least %d needed", capacity, s, elements); lovrAssert(capacity >= elements, "Blob can only hold %d int%s, at least %d needed for uniform '%s'", capacity, s, elements, debug);
memcpy(dest, blob->data, elements * sizeof(int)); memcpy(dest, blob->data, elements * sizeof(int));
break; break;
default: lovrThrow(""); // TODO case UNIFORM_SAMPLER:
lovrThrow("Texture uniform '%s' can not be updated with a Blob", debug);
} }
return 0; return 0;
@ -47,7 +48,7 @@ int luax_checkuniform(lua_State* L, int index, const Uniform* uniform, void* des
bool isTable = lua_istable(L, index); bool isTable = lua_istable(L, index);
if (isTable) { if (isTable) {
int length = lua_objlen(L, index); int length = lua_objlen(L, index);
lovrAssert(length == count, ""); // TODO length = MIN(length, count);
for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) {
lua_rawgeti(L, index, i + 1); lua_rawgeti(L, index, i + 1);
switch (uniform->type) { switch (uniform->type) {
@ -76,7 +77,7 @@ int luax_checkuniform(lua_State* L, int index, const Uniform* uniform, void* des
if (wrappedTable) { if (wrappedTable) {
int length = lua_objlen(L, index); int length = lua_objlen(L, index);
lovrAssert(length == count, ""); // TODO length = MIN(length, count);
for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) {
lua_rawgeti(L, index, i + 1); lua_rawgeti(L, index, i + 1);
@ -97,8 +98,7 @@ int luax_checkuniform(lua_State* L, int index, const Uniform* uniform, void* des
*((int*) dest + i * components + j) = luaL_checkinteger(L, -1); *((int*) dest + i * components + j) = luaL_checkinteger(L, -1);
break; break;
default: case UNIFORM_SAMPLER: lovrThrow("Unreachable");
lovrThrow(""); // TODO
} }
lua_pop(L, 1); lua_pop(L, 1);
} }
@ -125,7 +125,7 @@ int luax_checkuniform(lua_State* L, int index, const Uniform* uniform, void* des
*((float*) dest + i * components + j) = luaL_checknumber(L, -1); *((float*) dest + i * components + j) = luaL_checknumber(L, -1);
break; break;
default: lovrThrow(""); // TODO case UNIFORM_SAMPLER: lovrThrow("Unreachable");
} }
} }
} }