From ccd98d4dbdb7acde2433153a01d00a3b9bed02c0 Mon Sep 17 00:00:00 2001 From: sanine-a Date: Tue, 27 Oct 2020 15:31:14 -0500 Subject: fix bug in honey.shader.new and add basic primitives bindings --- src/primitives/primitives.c | 26 ++++++++++++++++++++++++++ src/primitives/primitives.h | 3 +++ 2 files changed, 29 insertions(+) (limited to 'src/primitives') 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, -- cgit v1.2.1