diff options
Diffstat (limited to 'src/primitives')
-rw-r--r-- | src/primitives/primitives.c | 223 | ||||
-rw-r--r-- | src/primitives/primitives.h | 62 |
2 files changed, 0 insertions, 285 deletions
diff --git a/src/primitives/primitives.c b/src/primitives/primitives.c deleted file mode 100644 index d499248..0000000 --- a/src/primitives/primitives.c +++ /dev/null @@ -1,223 +0,0 @@ -#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; -} - -static int honey_mesh_lua_cube(lua_State* L) -{ - float width, height, depth; - honey_lua_parse_arguments(L, 3, - HONEY_NUMBER, &width, - HONEY_NUMBER, &height, - HONEY_NUMBER, &depth); - - honey_mesh* mesh = lua_newuserdata(L, sizeof(honey_mesh)); - if (honey_mesh_new_textured_cube(mesh, width, height, depth) != 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 } }, - { "cube", HONEY_FUNCTION, { .function = honey_mesh_lua_cube } }, - }; - - honey_lua_create_table(L, primitive_elements, 2); -} - -/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ - -honey_result honey_mesh_new_textured_plane(honey_mesh* mesh, - float width, - float height) { - float x0 = 0; - float y0 = 0; - float x1 = width; - float y1 = height; - - float vertices[] = { - /* position normal uv */ - x0, y0, 0, 0, 0, 1, 0, 0, - x1, y0, 0, 0, 0, 1, 1, 0, - x0, y1, 0, 0, 0, 1, 0, 1, - x1, y1, 0, 0, 0, 1, 1, 1 }; - - unsigned int indices[] = { - 0, 1, 2, - 3, 2, 1 }; - - unsigned int attrib_sizes[] = { 3, 3, 2 }; - - honey_result result = honey_mesh_new(mesh, - vertices, 4, - 3, attrib_sizes, - indices, 6); - return result; -} - -/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ - -honey_result honey_mesh_new_cube(honey_mesh* mesh, - float width, - float height, - float depth) { - float x0 = 0; - float y0 = 0; - float z0 = 0; - - float x1 = width; - float y1 = height; - float z1 = depth; - - float vertices[] = { - /* position normal tex coord */ - /* back face */ - x0, y0, z0, 0, 0, -1, - x1, y0, z0, 0, 0, -1, - x0, y1, z0, 0, 0, -1, - x1, y1, z0, 0, 0, -1, - - /* front face */ - x0, y0, z1, 0, 0, 1, - x1, y0, z1, 0, 0, 1, - x0, y1, z1, 0, 0, 1, - x1, y1, z1, 0, 0, 1, - - /* left face */ - x0, y0, z0, -1, 0, 0, - x0, y1, z0, -1, 0, 0, - x0, y0, z1, -1, 0, 0, - x0, y1, z1, -1, 0, 0, - - /* right face */ - x1, y0, z0, 1, 0, 0, - x1, y1, z0, 1, 0, 0, - x1, y0, z1, 1, 0, 0, - x1, y1, z1, 1, 0, 0, - - /* bottom face */ - x0, y0, z0, 0, -1, 0, - x1, y0, z0, 0, -1, 0, - x0, y0, z1, 0, -1, 0, - x1, y0, z1, 0, -1, 0, - - /* top face */ - x0, y1, z0, 0, 1, 0, - x1, y1, z0, 0, 1, 0, - x0, y1, z1, 0, 1, 0, - x1, y1, z1, 0, 1, 0 }; - - unsigned int indices[] = { - 0, 1, 2, - 1, 2, 3, - 4, 5, 6, - 5, 6, 7, - 8, 9, 10, - 9, 10, 11, - 12, 13, 14, - 13, 14, 15, - 16, 17, 18, - 17, 18, 19, - 20, 21, 22, - 21, 22, 23 }; - - unsigned int attrib_sizes[] = { 3, 3 }; - - honey_result result = honey_mesh_new(mesh, - vertices, 24, - 2, attrib_sizes, - indices, 36); - - return result; -} - -/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ - -honey_result honey_mesh_new_textured_cube(honey_mesh* mesh, - float width, - float height, - float depth) { - float x0 = 0; - float y0 = 0; - float z0 = 0; - - float x1 = width; - float y1 = height; - float z1 = depth; - - float vertices[] = { - /* position normal tex coord */ - /* back face */ - x0, y0, z0, 0, 0, -1, 0, 0, - x1, y0, z0, 0, 0, -1, 1, 0, - x0, y1, z0, 0, 0, -1, 0, 1, - x1, y1, z0, 0, 0, -1, 1, 1, - - /* front face */ - x0, y0, z1, 0, 0, 1, 0, 0, - x1, y0, z1, 0, 0, 1, 1, 0, - x0, y1, z1, 0, 0, 1, 0, 1, - x1, y1, z1, 0, 0, 1, 1, 1, - - /* left face */ - x0, y0, z0, -1, 0, 0, 0, 0, - x0, y1, z0, -1, 0, 0, 1, 0, - x0, y0, z1, -1, 0, 0, 0, 1, - x0, y1, z1, -1, 0, 0, 1, 1, - - /* right face */ - x1, y0, z0, 1, 0, 0, 0, 0, - x1, y1, z0, 1, 0, 0, 1, 0, - x1, y0, z1, 1, 0, 0, 0, 1, - x1, y1, z1, 1, 0, 0, 1, 1, - - /* bottom face */ - x0, y0, z0, 0, -1, 0, 0, 0, - x1, y0, z0, 0, -1, 0, 1, 0, - x0, y0, z1, 0, -1, 0, 0, 1, - x1, y0, z1, 0, -1, 0, 1, 1, - - /* top face */ - x0, y1, z0, 0, 1, 0, 0, 0, - x1, y1, z0, 0, 1, 0, 1, 0, - x0, y1, z1, 0, 1, 0, 0, 1, - x1, y1, z1, 0, 1, 0, 1, 1 }; - - unsigned int indices[] = { - 0, 1, 2, - 1, 2, 3, - 4, 5, 6, - 5, 6, 7, - 8, 9, 10, - 9, 10, 11, - 12, 13, 14, - 13, 14, 15, - 16, 17, 18, - 17, 18, 19, - 20, 21, 22, - 21, 22, 23 }; - - unsigned int attrib_sizes[] = { 3, 3, 2 }; - - honey_result result; - result = honey_mesh_new(mesh, vertices, 24, - 3, attrib_sizes, - indices, 36); - return result; -} diff --git a/src/primitives/primitives.h b/src/primitives/primitives.h deleted file mode 100644 index ff4b01b..0000000 --- a/src/primitives/primitives.h +++ /dev/null @@ -1,62 +0,0 @@ -#ifndef HONEY_PRIMITIVES_H -#define HONEY_PRIMITIVES H - -/** @file primitives.h - * - * @brief Define various common primitive objects. - */ - -#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, - * 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 |