Kohi Game Engine
asset_system.h File Reference

This files contains the implementation of the asset system, which is responsible for managing the lifecycle of assets. More...

#include <assets/kasset_types.h>
#include <strings/kname.h>

Go to the source code of this file.

Data Structures

struct  asset_system_config
 

Macros

#define asset_system_watch_for_reload(state, type, asset_name, package_name)
 
#define asset_system_stop_watch(state, watch_id)
 

Typedefs

typedef struct asset_system_config asset_system_config
 
typedef void(* PFN_kasset_binary_loaded_callback) (void *listener, kasset_binary *asset)
 
typedef void(* PFN_kasset_image_loaded_callback) (void *listener, kasset_image *asset)
 
typedef void(* PFN_kasset_static_mesh_loaded_callback) (void *listener, kasset_static_mesh *asset)
 
typedef void(* PFN_kasset_heightmap_terrain_loaded_callback) (void *listener, kasset_heightmap_terrain *asset)
 
typedef void(* PFN_kasset_material_loaded_callback) (void *listener, kasset_material *asset)
 
typedef void(* PFN_kasset_audio_loaded_callback) (void *listener, kasset_audio *asset)
 

Functions

KAPI b8 asset_system_deserialize_config (const char *config_str, asset_system_config *out_config)
 Deserializes configuration for the asset system from the provided string. More...
 
KAPI b8 asset_system_initialize (u64 *memory_requirement, struct asset_system_state *state, const asset_system_config *config)
 Initializes the asset system. Call twice; once to get the memory requirement (pass 0 to state and config) and a second time passing along the state and config once allocated. More...
 
KAPI void asset_system_shutdown (struct asset_system_state *state)
 Shuts the system down. More...
 
KAPI kasset_binaryasset_system_request_binary (struct asset_system_state *state, const char *name, void *listener, PFN_kasset_binary_loaded_callback callback)
 
KAPI kasset_binaryasset_system_request_binary_sync (struct asset_system_state *state, const char *name)
 
KAPI kasset_binaryasset_system_request_binary_from_package (struct asset_system_state *state, const char *package_name, const char *name, void *listener, PFN_kasset_binary_loaded_callback callback)
 
KAPI kasset_binaryasset_system_request_binary_from_package_sync (struct asset_system_state *state, const char *package_name, const char *name)
 
KAPI void asset_system_release_binary (struct asset_system_state *state, kasset_binary *asset)
 
KAPI kasset_textasset_system_request_text_sync (struct asset_system_state *state, const char *name)
 
KAPI kasset_textasset_system_request_text_from_package_sync (struct asset_system_state *state, const char *package_name, const char *name)
 
KAPI void asset_system_release_text (struct asset_system_state *state, kasset_text *asset)
 
KAPI kasset_imageasset_system_request_image (struct asset_system_state *state, const char *name, void *listener, PFN_kasset_image_loaded_callback callback)
 
KAPI kasset_imageasset_system_request_image_sync (struct asset_system_state *state, const char *name)
 
KAPI kasset_imageasset_system_request_image_from_package (struct asset_system_state *state, const char *package_name, const char *name, void *listener, PFN_kasset_image_loaded_callback callback)
 
KAPI kasset_imageasset_system_request_image_from_package_sync (struct asset_system_state *state, const char *package_name, const char *name)
 
KAPI void asset_system_release_image (struct asset_system_state *state, kasset_image *asset)
 
KAPI kasset_bitmap_fontasset_system_request_bitmap_font_sync (struct asset_system_state *state, const char *name)
 
KAPI kasset_bitmap_fontasset_system_request_bitmap_font_from_package_sync (struct asset_system_state *state, const char *package_name, const char *name)
 
KAPI void asset_system_release_bitmap_font (struct asset_system_state *state, kasset_bitmap_font *asset)
 
KAPI kasset_system_fontasset_system_request_system_font_sync (struct asset_system_state *state, const char *name)
 
KAPI kasset_system_fontasset_system_request_system_font_from_package_sync (struct asset_system_state *state, const char *package_name, const char *name)
 
KAPI void asset_system_release_system_font (struct asset_system_state *state, kasset_system_font *asset)
 
KAPI kasset_static_meshasset_system_request_static_mesh (struct asset_system_state *state, const char *name, void *listener, PFN_kasset_static_mesh_loaded_callback callback)
 
KAPI kasset_static_meshasset_system_request_static_mesh_sync (struct asset_system_state *state, const char *name)
 
KAPI kasset_static_meshasset_system_request_static_mesh_from_package (struct asset_system_state *state, const char *package_name, const char *name, void *listener, PFN_kasset_static_mesh_loaded_callback callback)
 
KAPI kasset_static_meshasset_system_request_static_mesh_from_package_sync (struct asset_system_state *state, const char *package_name, const char *name)
 
KAPI void asset_system_release_static_mesh (struct asset_system_state *state, kasset_static_mesh *asset)
 
KAPI kasset_heightmap_terrainasset_system_request_heightmap_terrain (struct asset_system_state *state, const char *name, void *listener, PFN_kasset_heightmap_terrain_loaded_callback callback)
 
KAPI kasset_heightmap_terrainasset_system_request_heightmap_terrain_sync (struct asset_system_state *state, const char *name)
 
KAPI kasset_heightmap_terrainasset_system_request_heightmap_terrain_from_package (struct asset_system_state *state, const char *package_name, const char *name, void *listener, PFN_kasset_heightmap_terrain_loaded_callback callback)
 
KAPI kasset_heightmap_terrainasset_system_request_heightmap_terrain_from_package_sync (struct asset_system_state *state, const char *package_name, const char *name)
 
KAPI void asset_system_release_heightmap_terrain (struct asset_system_state *state, kasset_heightmap_terrain *asset)
 
KAPI kasset_materialasset_system_request_material (struct asset_system_state *state, const char *name, void *listener, PFN_kasset_material_loaded_callback callback)
 
KAPI kasset_materialasset_system_terrain_request_material_sync (struct asset_system_state *state, const char *name)
 
KAPI kasset_materialasset_system_request_material_from_package (struct asset_system_state *state, const char *package_name, const char *name, void *listener, PFN_kasset_material_loaded_callback callback)
 
KAPI kasset_materialasset_system_request_material_from_package_sync (struct asset_system_state *state, const char *package_name, const char *name)
 
KAPI void asset_system_release_material (struct asset_system_state *state, kasset_material *asset)
 
KAPI kasset_audioasset_system_request_audio (struct asset_system_state *state, const char *name, void *listener, PFN_kasset_audio_loaded_callback callback)
 
KAPI kasset_audioasset_system_terrain_request_audio_sync (struct asset_system_state *state, const char *name)
 
KAPI kasset_audioasset_system_request_audio_from_package (struct asset_system_state *state, const char *package_name, const char *name, void *listener, PFN_kasset_audio_loaded_callback callback)
 
KAPI kasset_audioasset_system_request_audio_from_package_sync (struct asset_system_state *state, const char *package_name, const char *name)
 
KAPI void asset_system_release_audio (struct asset_system_state *state, kasset_audio *asset)
 
KAPI kasset_sceneasset_system_request_scene_sync (struct asset_system_state *state, const char *name)
 
KAPI kasset_sceneasset_system_request_scene_from_package_sync (struct asset_system_state *state, const char *package_name, const char *name)
 
KAPI void asset_system_release_scene (struct asset_system_state *state, kasset_scene *asset)
 
KAPI kasset_shaderasset_system_terrain_request_shader_sync (struct asset_system_state *state, const char *name)
 
KAPI kasset_shaderasset_system_request_shader_from_package_sync (struct asset_system_state *state, const char *package_name, const char *name)
 
KAPI void asset_system_release_shader (struct asset_system_state *state, kasset_shader *asset)
 
KAPI b8 asset_system_shader_watch (struct asset_system_state *state, kasset_shader *shader, const char *package_name, const char *name, u32 *out_watch_id)
 

Detailed Description

This files contains the implementation of the asset system, which is responsible for managing the lifecycle of assets.

Author
Travis Vroman (travi.nosp@m.s@ko.nosp@m.hieng.nosp@m.ine..nosp@m.com)
Version
1.0
Date
2024-07-28

Macro Definition Documentation

◆ asset_system_stop_watch

#define asset_system_stop_watch (   state,
  watch_id 
)

◆ asset_system_watch_for_reload

#define asset_system_watch_for_reload (   state,
  type,
  asset_name,
  package_name 
)

Typedef Documentation

◆ asset_system_config

◆ PFN_kasset_audio_loaded_callback

typedef void(* PFN_kasset_audio_loaded_callback) (void *listener, kasset_audio *asset)

◆ PFN_kasset_binary_loaded_callback

typedef void(* PFN_kasset_binary_loaded_callback) (void *listener, kasset_binary *asset)

◆ PFN_kasset_heightmap_terrain_loaded_callback

typedef void(* PFN_kasset_heightmap_terrain_loaded_callback) (void *listener, kasset_heightmap_terrain *asset)

◆ PFN_kasset_image_loaded_callback

typedef void(* PFN_kasset_image_loaded_callback) (void *listener, kasset_image *asset)

◆ PFN_kasset_material_loaded_callback

typedef void(* PFN_kasset_material_loaded_callback) (void *listener, kasset_material *asset)

◆ PFN_kasset_static_mesh_loaded_callback

typedef void(* PFN_kasset_static_mesh_loaded_callback) (void *listener, kasset_static_mesh *asset)

Function Documentation

◆ asset_system_deserialize_config()

KAPI b8 asset_system_deserialize_config ( const char *  config_str,
asset_system_config out_config 
)

Deserializes configuration for the asset system from the provided string.

Parameters
config_strThe string to deserialize.
out_configA pointer to hold the deserialized config.
Returns
True on success; otherwise false.

◆ asset_system_initialize()

KAPI b8 asset_system_initialize ( u64 memory_requirement,
struct asset_system_state *  state,
const asset_system_config config 
)

Initializes the asset system. Call twice; once to get the memory requirement (pass 0 to state and config) and a second time passing along the state and config once allocated.

Parameters
memory_requirementA pointer to hold the numeric amount of bytes needed for the state. Required.
stateA pointer to the state. Pass 0 when getting memory requirement, otherwise pass the block of allocated memory.
configA constant pointer to the configuration of the system. Ignored when getting memory requirement.
Returns
True on success; otherwise false.

◆ asset_system_release_audio()

KAPI void asset_system_release_audio ( struct asset_system_state *  state,
kasset_audio asset 
)

◆ asset_system_release_binary()

KAPI void asset_system_release_binary ( struct asset_system_state *  state,
kasset_binary asset 
)

◆ asset_system_release_bitmap_font()

KAPI void asset_system_release_bitmap_font ( struct asset_system_state *  state,
kasset_bitmap_font asset 
)

◆ asset_system_release_heightmap_terrain()

KAPI void asset_system_release_heightmap_terrain ( struct asset_system_state *  state,
kasset_heightmap_terrain asset 
)

◆ asset_system_release_image()

KAPI void asset_system_release_image ( struct asset_system_state *  state,
kasset_image asset 
)

◆ asset_system_release_material()

KAPI void asset_system_release_material ( struct asset_system_state *  state,
kasset_material asset 
)

◆ asset_system_release_scene()

KAPI void asset_system_release_scene ( struct asset_system_state *  state,
kasset_scene asset 
)

◆ asset_system_release_shader()

KAPI void asset_system_release_shader ( struct asset_system_state *  state,
kasset_shader asset 
)

◆ asset_system_release_static_mesh()

KAPI void asset_system_release_static_mesh ( struct asset_system_state *  state,
kasset_static_mesh asset 
)

◆ asset_system_release_system_font()

KAPI void asset_system_release_system_font ( struct asset_system_state *  state,
kasset_system_font asset 
)

◆ asset_system_release_text()

KAPI void asset_system_release_text ( struct asset_system_state *  state,
kasset_text asset 
)

◆ asset_system_request_audio()

KAPI kasset_audio* asset_system_request_audio ( struct asset_system_state *  state,
const char *  name,
void *  listener,
PFN_kasset_audio_loaded_callback  callback 
)

◆ asset_system_request_audio_from_package()

KAPI kasset_audio* asset_system_request_audio_from_package ( struct asset_system_state *  state,
const char *  package_name,
const char *  name,
void *  listener,
PFN_kasset_audio_loaded_callback  callback 
)

◆ asset_system_request_audio_from_package_sync()

KAPI kasset_audio* asset_system_request_audio_from_package_sync ( struct asset_system_state *  state,
const char *  package_name,
const char *  name 
)

◆ asset_system_request_binary()

KAPI kasset_binary* asset_system_request_binary ( struct asset_system_state *  state,
const char *  name,
void *  listener,
PFN_kasset_binary_loaded_callback  callback 
)

◆ asset_system_request_binary_from_package()

KAPI kasset_binary* asset_system_request_binary_from_package ( struct asset_system_state *  state,
const char *  package_name,
const char *  name,
void *  listener,
PFN_kasset_binary_loaded_callback  callback 
)

◆ asset_system_request_binary_from_package_sync()

KAPI kasset_binary* asset_system_request_binary_from_package_sync ( struct asset_system_state *  state,
const char *  package_name,
const char *  name 
)

◆ asset_system_request_binary_sync()

KAPI kasset_binary* asset_system_request_binary_sync ( struct asset_system_state *  state,
const char *  name 
)

◆ asset_system_request_bitmap_font_from_package_sync()

KAPI kasset_bitmap_font* asset_system_request_bitmap_font_from_package_sync ( struct asset_system_state *  state,
const char *  package_name,
const char *  name 
)

◆ asset_system_request_bitmap_font_sync()

KAPI kasset_bitmap_font* asset_system_request_bitmap_font_sync ( struct asset_system_state *  state,
const char *  name 
)

◆ asset_system_request_heightmap_terrain()

KAPI kasset_heightmap_terrain* asset_system_request_heightmap_terrain ( struct asset_system_state *  state,
const char *  name,
void *  listener,
PFN_kasset_heightmap_terrain_loaded_callback  callback 
)

◆ asset_system_request_heightmap_terrain_from_package()

KAPI kasset_heightmap_terrain* asset_system_request_heightmap_terrain_from_package ( struct asset_system_state *  state,
const char *  package_name,
const char *  name,
void *  listener,
PFN_kasset_heightmap_terrain_loaded_callback  callback 
)

◆ asset_system_request_heightmap_terrain_from_package_sync()

KAPI kasset_heightmap_terrain* asset_system_request_heightmap_terrain_from_package_sync ( struct asset_system_state *  state,
const char *  package_name,
const char *  name 
)

◆ asset_system_request_heightmap_terrain_sync()

KAPI kasset_heightmap_terrain* asset_system_request_heightmap_terrain_sync ( struct asset_system_state *  state,
const char *  name 
)

◆ asset_system_request_image()

KAPI kasset_image* asset_system_request_image ( struct asset_system_state *  state,
const char *  name,
void *  listener,
PFN_kasset_image_loaded_callback  callback 
)

◆ asset_system_request_image_from_package()

KAPI kasset_image* asset_system_request_image_from_package ( struct asset_system_state *  state,
const char *  package_name,
const char *  name,
void *  listener,
PFN_kasset_image_loaded_callback  callback 
)

◆ asset_system_request_image_from_package_sync()

KAPI kasset_image* asset_system_request_image_from_package_sync ( struct asset_system_state *  state,
const char *  package_name,
const char *  name 
)

◆ asset_system_request_image_sync()

KAPI kasset_image* asset_system_request_image_sync ( struct asset_system_state *  state,
const char *  name 
)

◆ asset_system_request_material()

KAPI kasset_material* asset_system_request_material ( struct asset_system_state *  state,
const char *  name,
void *  listener,
PFN_kasset_material_loaded_callback  callback 
)

◆ asset_system_request_material_from_package()

KAPI kasset_material* asset_system_request_material_from_package ( struct asset_system_state *  state,
const char *  package_name,
const char *  name,
void *  listener,
PFN_kasset_material_loaded_callback  callback 
)

◆ asset_system_request_material_from_package_sync()

KAPI kasset_material* asset_system_request_material_from_package_sync ( struct asset_system_state *  state,
const char *  package_name,
const char *  name 
)

◆ asset_system_request_scene_from_package_sync()

KAPI kasset_scene* asset_system_request_scene_from_package_sync ( struct asset_system_state *  state,
const char *  package_name,
const char *  name 
)

◆ asset_system_request_scene_sync()

KAPI kasset_scene* asset_system_request_scene_sync ( struct asset_system_state *  state,
const char *  name 
)

◆ asset_system_request_shader_from_package_sync()

KAPI kasset_shader* asset_system_request_shader_from_package_sync ( struct asset_system_state *  state,
const char *  package_name,
const char *  name 
)

◆ asset_system_request_static_mesh()

KAPI kasset_static_mesh* asset_system_request_static_mesh ( struct asset_system_state *  state,
const char *  name,
void *  listener,
PFN_kasset_static_mesh_loaded_callback  callback 
)

◆ asset_system_request_static_mesh_from_package()

KAPI kasset_static_mesh* asset_system_request_static_mesh_from_package ( struct asset_system_state *  state,
const char *  package_name,
const char *  name,
void *  listener,
PFN_kasset_static_mesh_loaded_callback  callback 
)

◆ asset_system_request_static_mesh_from_package_sync()

KAPI kasset_static_mesh* asset_system_request_static_mesh_from_package_sync ( struct asset_system_state *  state,
const char *  package_name,
const char *  name 
)

◆ asset_system_request_static_mesh_sync()

KAPI kasset_static_mesh* asset_system_request_static_mesh_sync ( struct asset_system_state *  state,
const char *  name 
)

◆ asset_system_request_system_font_from_package_sync()

KAPI kasset_system_font* asset_system_request_system_font_from_package_sync ( struct asset_system_state *  state,
const char *  package_name,
const char *  name 
)

◆ asset_system_request_system_font_sync()

KAPI kasset_system_font* asset_system_request_system_font_sync ( struct asset_system_state *  state,
const char *  name 
)

◆ asset_system_request_text_from_package_sync()

KAPI kasset_text* asset_system_request_text_from_package_sync ( struct asset_system_state *  state,
const char *  package_name,
const char *  name 
)

◆ asset_system_request_text_sync()

KAPI kasset_text* asset_system_request_text_sync ( struct asset_system_state *  state,
const char *  name 
)

◆ asset_system_shader_watch()

KAPI b8 asset_system_shader_watch ( struct asset_system_state *  state,
kasset_shader shader,
const char *  package_name,
const char *  name,
u32 out_watch_id 
)

◆ asset_system_shutdown()

KAPI void asset_system_shutdown ( struct asset_system_state *  state)

Shuts the system down.

Parameters
stateA pointer to the state. Required.

◆ asset_system_terrain_request_audio_sync()

KAPI kasset_audio* asset_system_terrain_request_audio_sync ( struct asset_system_state *  state,
const char *  name 
)

◆ asset_system_terrain_request_material_sync()

KAPI kasset_material* asset_system_terrain_request_material_sync ( struct asset_system_state *  state,
const char *  name 
)

◆ asset_system_terrain_request_shader_sync()

KAPI kasset_shader* asset_system_terrain_request_shader_sync ( struct asset_system_state *  state,
const char *  name 
)