Switch to start and count for Buffer draw range;

This commit is contained in:
bjorn 2016-09-27 20:08:54 -07:00
parent 41db7ea9de
commit e4ecf2452f
2 changed files with 14 additions and 12 deletions

View File

@ -96,17 +96,18 @@ void lovrBufferSetRangeEnabled(Buffer* buffer, char isEnabled) {
buffer->isRangeEnabled = isEnabled;
}
void lovrBufferGetDrawRange(Buffer* buffer, int* start, int* end) {
void lovrBufferGetDrawRange(Buffer* buffer, int* start, int* count) {
*start = buffer->rangeStart;
*end = buffer->rangeStart + buffer->rangeCount - 1;
*count = buffer->rangeCount;
}
int lovrBufferSetDrawRange(Buffer* buffer, int rangeStart, int rangeEnd) {
if (rangeStart < 0 || rangeEnd < 0 || rangeStart > rangeEnd) {
int lovrBufferSetDrawRange(Buffer* buffer, int rangeStart, int rangeCount) {
if (rangeStart < 0 || rangeCount < 0 || rangeStart + rangeCount > buffer->size) {
return 1;
}
buffer->rangeStart = rangeStart;
buffer->rangeCount = rangeEnd - rangeStart + 1;
buffer->rangeCount = rangeCount;
return 0;
}

View File

@ -160,15 +160,15 @@ int l_lovrBufferSetVertexMap(lua_State* L) {
int l_lovrBufferGetDrawRange(lua_State* L) {
Buffer* buffer = luax_checkbuffer(L, 1);
if (lovrBufferIsRangeEnabled(buffer)) {
if (!lovrBufferIsRangeEnabled(buffer)) {
lua_pushnil(L);
return 1;
}
int start, end;
lovrBufferGetDrawRange(buffer, &start, &end);
int start, count;
lovrBufferGetDrawRange(buffer, &start, &count);
lua_pushinteger(L, start + 1);
lua_pushinteger(L, end + 1);
lua_pushinteger(L, count);
return 2;
}
@ -181,9 +181,10 @@ int l_lovrBufferSetDrawRange(lua_State* L) {
lovrBufferSetRangeEnabled(buffer, 1);
int rangeStart = luaL_checkinteger(L, 2) - 1;
int rangeEnd = luaL_checkinteger(L, 3) - 1;
if (lovrBufferSetDrawRange(buffer, rangeStart, rangeEnd)) {
return luaL_error(L, "Invalid buffer draw range (%d, %d)", rangeStart, rangeEnd);
int rangeCount = luaL_checkinteger(L, 3);
if (lovrBufferSetDrawRange(buffer, rangeStart, rangeCount)) {
return luaL_error(L, "Invalid buffer draw range (%d, %d)", rangeStart + 1, rangeCount);
}
return 0;
}