mirror of https://github.com/bjornbytes/lovr.git
lovr.graphics.origin;
This commit is contained in:
parent
4ae08b771f
commit
0786b67f0b
|
@ -19,6 +19,7 @@ static GraphicsState graphicsState;
|
|||
|
||||
void lovrGraphicsInit() {
|
||||
vec_init(&graphicsState.transforms);
|
||||
vec_push(&graphicsState.transforms, mat4_init());
|
||||
}
|
||||
|
||||
void lovrGraphicsClear(int color, int depth) {
|
||||
|
@ -64,18 +65,23 @@ void lovrGraphicsSetShader(Shader* shader) {
|
|||
|
||||
int lovrGraphicsPush() {
|
||||
vec_mat4_t* transforms = &graphicsState.transforms;
|
||||
if (transforms->length > 64) { return 1; }
|
||||
vec_push(transforms, transforms->length > 0 ? mat4_copy(vec_last(transforms)) : mat4_init());
|
||||
if (transforms->length >= 64) { return 1; }
|
||||
vec_push(transforms, mat4_copy(vec_last(transforms)));
|
||||
return 0;
|
||||
}
|
||||
|
||||
int lovrGraphicsPop() {
|
||||
vec_mat4_t* transforms = &graphicsState.transforms;
|
||||
if (transforms->length == 0) { return 1; }
|
||||
if (transforms->length <= 1) { return 1; }
|
||||
mat4_deinit(vec_pop(transforms));
|
||||
return 0;
|
||||
}
|
||||
|
||||
void lovrGraphicsOrigin() {
|
||||
vec_mat4_t* transforms = &graphicsState.transforms;
|
||||
mat4_setIdentity(vec_last(transforms));
|
||||
}
|
||||
|
||||
Buffer* lovrGraphicsNewBuffer(int size, BufferDrawMode drawMode, BufferUsage usage) {
|
||||
Buffer* buffer = malloc(sizeof(Buffer));
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@ Shader* lovrGraphicsGetShader();
|
|||
void lovrGraphicsSetShader(Shader* shader);
|
||||
int lovrGraphicsPush();
|
||||
int lovrGraphicsPop();
|
||||
void lovrGraphicsOrigin();
|
||||
Buffer* lovrGraphicsNewBuffer(int size, BufferDrawMode drawMode, BufferUsage usage);
|
||||
Model* lovrGraphicsNewModel(const char* path);
|
||||
Shader* lovrGraphicsNewShader(const char* vertexSource, const char* fragmentSource);
|
||||
|
|
|
@ -13,6 +13,7 @@ const luaL_Reg lovrGraphics[] = {
|
|||
{ "setShader", l_lovrGraphicsSetShader },
|
||||
{ "push", l_lovrGraphicsPush },
|
||||
{ "pop", l_lovrGraphicsPop },
|
||||
{ "origin", l_lovrGraphicsOrigin },
|
||||
{ "newModel", l_lovrGraphicsNewModel },
|
||||
{ "newBuffer", l_lovrGraphicsNewBuffer },
|
||||
{ "newShader", l_lovrGraphicsNewShader },
|
||||
|
@ -102,6 +103,11 @@ int l_lovrGraphicsPop(lua_State* L) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
int l_lovrGraphicsOrigin(lua_State* L) {
|
||||
lovrGraphicsOrigin();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int l_lovrGraphicsNewBuffer(lua_State* L) {
|
||||
const char* userDrawMode = luaL_optstring(L, 2, "fan");
|
||||
BufferDrawMode* drawMode = (BufferDrawMode*) map_get(&BufferDrawModes, userDrawMode);
|
||||
|
|
|
@ -16,6 +16,7 @@ int l_lovrGraphicsGetShader(lua_State* L);
|
|||
int l_lovrGraphicsSetShader(lua_State* L);
|
||||
int l_lovrGraphicsPush(lua_State* L);
|
||||
int l_lovrGraphicsPop(lua_State* L);
|
||||
int l_lovrGraphicsOrigin(lua_State* L);
|
||||
int l_lovrGraphicsNewBuffer(lua_State* L);
|
||||
int l_lovrGraphicsNewModel(lua_State* L);
|
||||
int l_lovrGraphicsNewShader(lua_State* L);
|
||||
|
|
Loading…
Reference in New Issue