lovr/src/api/types/model.c

68 lines
1.8 KiB
C
Raw Normal View History

2017-12-10 20:40:37 +00:00
#include "api.h"
2018-09-27 18:45:43 +00:00
#include "api/math.h"
2017-03-11 11:08:07 +00:00
#include "graphics/model.h"
2016-10-31 20:54:32 +00:00
2019-02-17 22:52:22 +00:00
static int l_lovrModelDraw(lua_State* L) {
2016-11-19 08:57:18 +00:00
Model* model = luax_checktype(L, 1, Model);
float transform[16];
int index = luax_readmat4(L, 2, transform, 1);
int instances = luaL_optinteger(L, index, 1);
lovrModelDraw(model, transform, instances);
2016-10-31 20:54:32 +00:00
return 0;
}
2016-11-08 22:51:58 +00:00
2019-02-17 22:52:22 +00:00
static int l_lovrModelGetAnimator(lua_State* L) {
2019-01-13 19:08:06 +00:00
Model* model = luax_checktype(L, 1, Model);
luax_pushobject(L, lovrModelGetAnimator(model));
return 1;
}
2019-02-17 22:52:22 +00:00
static int l_lovrModelSetAnimator(lua_State* L) {
2019-01-13 19:08:06 +00:00
Model* model = luax_checktype(L, 1, Model);
if (lua_isnoneornil(L, 2)) {
lovrModelSetAnimator(model, NULL);
} else {
Animator* animator = luax_checktype(L, 2, Animator);
lovrModelSetAnimator(model, animator);
}
return 0;
}
2019-02-17 22:52:22 +00:00
static int l_lovrModelGetMaterial(lua_State* L) {
Model* model = luax_checktype(L, 1, Model);
Material* material = lovrModelGetMaterial(model);
luax_pushobject(L, material);
return 1;
}
2019-02-17 22:52:22 +00:00
static int l_lovrModelSetMaterial(lua_State* L) {
Model* model = luax_checktype(L, 1, Model);
if (lua_isnoneornil(L, 2)) {
lovrModelSetMaterial(model, NULL);
} else {
Material* material = luax_checktype(L, 2, Material);
lovrModelSetMaterial(model, material);
}
return 0;
}
2019-02-17 22:52:22 +00:00
static int l_lovrModelGetAABB(lua_State* L) {
Model* model = luax_checktype(L, 1, Model);
float aabb[6];
lovrModelGetAABB(model, aabb);
for (int i = 0; i < 6; i++) {
lua_pushnumber(L, aabb[i]);
}
return 6;
}
2017-03-11 11:08:07 +00:00
const luaL_Reg lovrModel[] = {
{ "draw", l_lovrModelDraw },
2019-01-13 19:08:06 +00:00
{ "getAnimator", l_lovrModelGetAnimator },
{ "setAnimator", l_lovrModelSetAnimator },
{ "getMaterial", l_lovrModelGetMaterial },
{ "setMaterial", l_lovrModelSetMaterial },
{ "getAABB", l_lovrModelGetAABB },
2017-03-11 11:08:07 +00:00
{ NULL, NULL }
};