diff options
author | sanine-a <sanine.not@pm.me> | 2020-10-27 15:31:14 -0500 |
---|---|---|
committer | sanine-a <sanine.not@pm.me> | 2020-10-27 15:31:14 -0500 |
commit | ccd98d4dbdb7acde2433153a01d00a3b9bed02c0 (patch) | |
tree | 9ad033d4d6b48d9824a9c924fe23a421feff1f70 /src/primitives | |
parent | 50a8d3dc884816fbb1e3a3df3c401358e62b5eea (diff) |
fix bug in honey.shader.new and add basic primitives bindings
Diffstat (limited to 'src/primitives')
-rw-r--r-- | src/primitives/primitives.c | 26 | ||||
-rw-r--r-- | src/primitives/primitives.h | 3 |
2 files changed, 29 insertions, 0 deletions
diff --git a/src/primitives/primitives.c b/src/primitives/primitives.c index efc4a0f..1bfbe14 100644 --- a/src/primitives/primitives.c +++ b/src/primitives/primitives.c @@ -1,5 +1,31 @@ #include "primitives.h" +static int honey_mesh_lua_plane(lua_State* L) +{ + float width, height; + honey_lua_parse_arguments(L, 2, + HONEY_NUMBER, &width, + HONEY_NUMBER, &height); + + honey_mesh* mesh = lua_newuserdata(L, sizeof(honey_mesh)); + if (honey_mesh_new_textured_plane(mesh, width, height) != HONEY_OK) { + lua_pushstring(L, "error encountered while building plane"); + lua_error(L); + } + return 1; +} + +void honey_setup_primitives(lua_State* L) +{ + honey_lua_element primitive_elements[] = { + { "plane", HONEY_FUNCTION, { .function = honey_mesh_lua_plane } }, + }; + + honey_lua_create_table(L, primitive_elements, 1); +} + +/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ + honey_result honey_mesh_new_textured_plane(honey_mesh* mesh, float width, float height) { diff --git a/src/primitives/primitives.h b/src/primitives/primitives.h index fbf7753..ff4b01b 100644 --- a/src/primitives/primitives.h +++ b/src/primitives/primitives.h @@ -9,6 +9,9 @@ #include "../common.h" #include "../mesh/mesh.h" +/** @brief Push table of lua bindings for creating primitives to the stack. */ +void honey_setup_primitives(lua_State* L); + /** @brief Create a textured plane. * * This function creates a plane with vertex positions in attribute 0, |