summaryrefslogtreecommitdiff
path: root/src/primitives
diff options
context:
space:
mode:
Diffstat (limited to 'src/primitives')
-rw-r--r--src/primitives/primitives.c26
-rw-r--r--src/primitives/primitives.h3
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,