Kohi Game Engine
static_mesh_system.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "core_render_types.h"
5 #include "math/geometry.h"
6 #include "math/math_types.h"
8 
14 typedef struct kstatic_mesh_instance {
20 
21 typedef struct static_mesh_system_config {
24 
25 struct static_mesh_system_state;
26 
27 KAPI b8 static_mesh_system_initialize(u64* memory_requirement, struct static_mesh_system_state* state, static_mesh_system_config config);
28 KAPI void static_mesh_system_shutdown(struct static_mesh_system_state* state);
29 
30 KAPI kstatic_mesh_instance static_mesh_instance_acquire(struct static_mesh_system_state* state, kname asset_name);
31 KAPI kstatic_mesh_instance static_mesh_instance_acquire_from_package(struct static_mesh_system_state* state, kname asset_name, kname package_name);
32 KAPI void static_mesh_instance_release(struct static_mesh_system_state* state, kstatic_mesh_instance* instance);
33 
34 KAPI b8 static_mesh_is_loaded(struct static_mesh_system_state* state, kstatic_mesh m);
35 KAPI b8 static_mesh_tint_get(struct static_mesh_system_state* state, kstatic_mesh_instance instance, vec4* out_tint);
36 KAPI b8 static_mesh_tint_set(struct static_mesh_system_state* state, kstatic_mesh_instance instance, vec4 tint);
37 KAPI b8 static_mesh_extents_get(struct static_mesh_system_state* state, kstatic_mesh m, extents_3d* out_extents);
38 
39 KAPI b8 static_mesh_submesh_count_get(struct static_mesh_system_state* state, kstatic_mesh m, u16* out_count);
40 KAPI const kgeometry* static_mesh_submesh_geometry_get_at(struct static_mesh_system_state* state, kstatic_mesh m, u16 index);
41 KAPI const material_instance* static_mesh_submesh_material_instance_get_at(struct static_mesh_system_state* state, kstatic_mesh_instance instance, u16 index);
42 
43 KAPI b8 static_mesh_render_data_generate(struct static_mesh_system_state* state, kstatic_mesh_instance instance, kstatic_mesh_render_data_flag_bits flags, kstatic_mesh_render_data* out_render_data);
u32 kstatic_mesh_render_data_flag_bits
Collection of flags for a static mesh submesh to be rendered.
Definition: core_render_types.h:434
#define KAPI
Import/export qualifier.
Definition: defines.h:205
_Bool b8
8-bit boolean type
Definition: defines.h:58
unsigned short u16
Unsigned 16-bit integer.
Definition: defines.h:22
unsigned long long u64
Unsigned 64-bit integer.
Definition: defines.h:28
u64 kname
A kname is a string hash made for quick comparisons versus traditional string comparisons.
Definition: kname.h:36
u16 kstatic_mesh
Represents a single static mesh, which contains geometry.
Definition: kresource_types.h:53
The material system is responsible for managing materials in the engine, including reference counting...
Contains various math types required for the engine.
KAPI b8 static_mesh_tint_set(struct static_mesh_system_state *state, kstatic_mesh_instance instance, vec4 tint)
KAPI b8 static_mesh_system_initialize(u64 *memory_requirement, struct static_mesh_system_state *state, static_mesh_system_config config)
KAPI void static_mesh_system_shutdown(struct static_mesh_system_state *state)
KAPI void static_mesh_instance_release(struct static_mesh_system_state *state, kstatic_mesh_instance *instance)
KAPI b8 static_mesh_is_loaded(struct static_mesh_system_state *state, kstatic_mesh m)
KAPI void static_mesh_render_data_destroy(kstatic_mesh_render_data *render_data)
struct static_mesh_system_config static_mesh_system_config
KAPI b8 static_mesh_submesh_count_get(struct static_mesh_system_state *state, kstatic_mesh m, u16 *out_count)
KAPI const material_instance * static_mesh_submesh_material_instance_get_at(struct static_mesh_system_state *state, kstatic_mesh_instance instance, u16 index)
KAPI const kgeometry * static_mesh_submesh_geometry_get_at(struct static_mesh_system_state *state, kstatic_mesh m, u16 index)
KAPI kstatic_mesh_instance static_mesh_instance_acquire(struct static_mesh_system_state *state, kname asset_name)
KAPI b8 static_mesh_extents_get(struct static_mesh_system_state *state, kstatic_mesh m, extents_3d *out_extents)
KAPI b8 static_mesh_tint_get(struct static_mesh_system_state *state, kstatic_mesh_instance instance, vec4 *out_tint)
KAPI b8 static_mesh_render_data_generate(struct static_mesh_system_state *state, kstatic_mesh_instance instance, kstatic_mesh_render_data_flag_bits flags, kstatic_mesh_render_data *out_render_data)
struct kstatic_mesh_instance kstatic_mesh_instance
Represents an instance of a static mesh. This is to be used in the world. Material instances are obta...
KAPI kstatic_mesh_instance static_mesh_instance_acquire_from_package(struct static_mesh_system_state *state, kname asset_name, kname package_name)
Represents the extents of a 3d object.
Definition: math_types.h:213
Represents geometry to be used for various purposes (rendering objects in the world,...
Definition: geometry.h:38
Represents an instance of a static mesh. This is to be used in the world. Material instances are obta...
Definition: static_mesh_system.h:14
kstatic_mesh mesh
The underlying mesh.
Definition: static_mesh_system.h:16
u16 instance_id
The identifier of the instance.
Definition: static_mesh_system.h:18
Definition: core_render_types.h:457
A material instance, which contains handles to both the base material as well as the instance itself....
Definition: core_render_types.h:395
Definition: static_mesh_system.h:21
kname application_package_name
Definition: static_mesh_system.h:22
A 4-element vector.
Definition: math_types.h:89