summaryrefslogtreecommitdiff
path: root/src/primitives.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/primitives.h')
-rw-r--r--src/primitives.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/primitives.h b/src/primitives.h
new file mode 100644
index 0000000..923a0e3
--- /dev/null
+++ b/src/primitives.h
@@ -0,0 +1,62 @@
+#ifndef HONEY_PRIMITIVES_H
+#define HONEY_PRIMITIVES H
+
+/** @file primitives.h
+ *
+ * @brief Define various common primitive objects.
+ */
+
+#include "common.h"
+#include "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,
+ * vertex normals in attribute 1, and UV coordinates in attribute 2.
+ *
+ * @param[out] mesh Pointer to the destination mesh
+ * @param[in] width Desired width of the plane (x-axis)
+ * @param[in] height Desired height of the plane (y-axis)
+ *
+ * @return 0 (HONEY_OK) on success, and an error code otherwise.
+ */
+honey_result honey_mesh_new_textured_plane(honey_mesh* mesh,
+ float width,
+ float height);
+
+/** @brief Create a cube.
+ *
+ * This function creates a cube with vertex positions in attribute 0.
+ *
+ * @param[out] mesh Pointer to the destination mesh
+ * @param[in] width Desired width of the cube (x-axis)
+ * @param[in] height Desired height of the cube (y-axis)
+ * @param[in] depth Desired depth of the cube (z-axis)
+ *
+ * @return Success or failure code
+ */
+honey_result honey_mesh_new_cube(honey_mesh* mesh,
+ float width,
+ float height,
+ float depth);
+/** @brief Create a textured cube.
+ *
+ * This function creates a cube with vertex positions in attribute 0,
+ * and texture coordinates in attribute 1.
+ *
+ * @param[out] mesh Pointer to the destination mesh
+ * @param[in] width Desired width of the cube (x-axis)
+ * @param[in] height Desired height of the cube (y-axis)
+ * @param[in] depth Desired depth of the cube (z-axis)
+ *
+ * @return Success or failure code
+ */
+honey_result honey_mesh_new_textured_cube(honey_mesh* mesh,
+ float width,
+ float height,
+ float depth);
+
+#endif