56 #define DEFAULT_GEOMETRY_NAME "default"
#define KAPI
Import/export qualifier.
Definition: defines.h:177
unsigned int u32
Unsigned 32-bit integer.
Definition: defines.h:25
_Bool b8
8-bit boolean type
Definition: defines.h:58
float f32
32-bit floating point number
Definition: defines.h:47
unsigned long long u64
Unsigned 64-bit integer.
Definition: defines.h:28
KAPI geometry * geometry_system_get_default(void)
Obtains a pointer to the default geometry.
struct geometry_system_config geometry_system_config
The geometry system configuration.
KAPI geometry_config geometry_system_generate_plane_config(f32 width, f32 height, u32 x_segment_count, u32 y_segment_count, f32 tile_x, f32 tile_y, const char *name, const char *material_name)
Generates configuration for plane geometries given the provided parameters. NOTE: vertex and index ar...
struct geometry_config geometry_config
Represents the configuration for a geometry.
void geometry_system_shutdown(void *state)
Shuts down the geometry system.
KAPI geometry * geometry_system_acquire_from_config(geometry_config config, b8 auto_release)
Registers and acquires a new geometry using the given config.
KAPI geometry * geometry_system_get_default_2d(void)
Obtains a pointer to the default geometry.
KAPI geometry_config geometry_system_generate_cube_config(f32 width, f32 height, f32 depth, f32 tile_x, f32 tile_y, const char *name, const char *material_name)
KAPI void geometry_system_config_dispose(geometry_config *config)
Frees resources held by the provided configuration.
KAPI geometry * geometry_system_acquire_by_id(u32 id)
Acquires an existing geometry by id.
KAPI void geometry_system_release(geometry *geometry)
Releases a reference to the provided geometry.
b8 geometry_system_initialize(u64 *memory_requirement, void *state, void *config)
Initializes the geometry system. Should be called twice; once to get the memory requirement (passing ...
#define MATERIAL_NAME_MAX_LENGTH
The maximum length of a material name.
Definition: resource_types.h:300
#define GEOMETRY_NAME_MAX_LENGTH
The maximum length of a geometry name.
Definition: resource_types.h:305
Represents the configuration for a geometry.
Definition: geometry_system.h:31
void * vertices
An array of vertices.
Definition: geometry_system.h:37
char material_name[MATERIAL_NAME_MAX_LENGTH]
The name of the material used by the geometry.
Definition: geometry_system.h:52
vec3 center
Definition: geometry_system.h:45
vec3 min_extents
Definition: geometry_system.h:46
char name[GEOMETRY_NAME_MAX_LENGTH]
The name of the geometry.
Definition: geometry_system.h:50
u32 index_count
The number of indices.
Definition: geometry_system.h:41
u32 vertex_size
The size of each vertex.
Definition: geometry_system.h:33
u32 vertex_count
The number of vertices.
Definition: geometry_system.h:35
u32 index_size
The size of each index.
Definition: geometry_system.h:39
vec3 max_extents
Definition: geometry_system.h:47
void * indices
An array of indices.
Definition: geometry_system.h:43
The geometry system configuration.
Definition: geometry_system.h:18
u32 max_geometry_count
NOTE: Should be significantly greater than the number of static meshes because the there can and will...
Definition: geometry_system.h:24
Represents actual geometry in the world. Typically (but not always, depending on use) paired with a m...
Definition: resource_types.h:311
A 3-element vector.
Definition: math_types.h:49