Kohi Game Engine
kmodel_system.h File Reference

Go to the source code of this file.

Data Structures

struct  anim_key_vec3
 
struct  anim_key_quat
 
struct  kmodel_channel
 
struct  kmodel_animation
 
struct  kmodel_bone
 
struct  kmodel_node
 
struct  kmodel_submesh
 
struct  kmodel_animation_shader_data
 
struct  kmodel_animator
 
struct  kmodel_instance_data
 
struct  kmodel_base
 
struct  kmodel_instance
 
struct  kmodel_system_config
 
struct  kmodel_instance_queue_entry
 
struct  kmodel_system_state
 

Macros

#define KANIMATION_MAX_BONES   64
 
#define KRENDERBUFFER_NAME_ANIMATIONS_GLOBAL   "Kohi.StorageBuffer.AnimationsGlobal"
 

Typedefs

typedef enum kmodel_type kmodel_type
 
typedef struct anim_key_vec3 anim_key_vec3
 
typedef struct anim_key_quat anim_key_quat
 
typedef struct kmodel_channel kmodel_channel
 
typedef struct kmodel_animation kmodel_animation
 
typedef struct kmodel_bone kmodel_bone
 
typedef struct kmodel_node kmodel_node
 
typedef struct kmodel_submesh kmodel_submesh
 
typedef enum kmodel_state kmodel_state
 
typedef enum kmodel_instance_state kmodel_instance_state
 
typedef struct kmodel_animation_shader_data kmodel_animation_shader_data
 
typedef enum kmodel_animator_state kmodel_animator_state
 
typedef struct kmodel_animator kmodel_animator
 
typedef struct kmodel_instance_data kmodel_instance_data
 
typedef struct kmodel_base kmodel_base
 
typedef struct kmodel_instance kmodel_instance
 
typedef struct kmodel_system_config kmodel_system_config
 
typedef void(* PFN_animated_mesh_loaded) (kmodel_instance instance, void *context)
 
typedef struct kmodel_instance_queue_entry kmodel_instance_queue_entry
 
typedef struct kmodel_system_state kmodel_system_state
 

Enumerations

enum  kmodel_type { KMODEL_TYPE_STATIC , KMODEL_TYPE_ANIMATED }
 
enum  kmodel_state { KMODEL_STATE_UNINITIALIZED , KMODEL_STATE_ACQUIRED , KMODEL_STATE_LOADING , KMODEL_STATE_LOADED }
 
enum  kmodel_instance_state { KMODEL_INSTANCE_STATE_UNINITIALIZED , KMODEL_INSTANCE_STATE_ACQUIRED }
 
enum  kmodel_animator_state { KMODEL_ANIMATOR_STATE_STOPPED , KMODEL_ANIMATOR_STATE_PLAYING , KMODEL_ANIMATOR_STATE_PAUSED }
 

Functions

b8 kmodel_system_initialize (u64 *memory_requirement, kmodel_system_state *memory, const kmodel_system_config *config)
 
void kmodel_system_shutdown (kmodel_system_state *state)
 
void kmodel_system_update (kmodel_system_state *state, f32 delta_time, frame_data *p_frame_data)
 
void kmodel_system_frame_prepare (kmodel_system_state *state, frame_data *p_frame_data)
 
KAPI void kmodel_system_time_scale (kmodel_system_state *state, f32 time_scale)
 
KAPI kmodel_instance kmodel_instance_acquire (struct kmodel_system_state *state, kname asset_name, PFN_animated_mesh_loaded callback, void *context)
 
KAPI kmodel_instance kmodel_instance_acquire_from_package (struct kmodel_system_state *state, kname asset_name, kname package_name, PFN_animated_mesh_loaded callback, void *context)
 
KAPI void kmodel_instance_release (struct kmodel_system_state *state, kmodel_instance *instance)
 
KAPI b8 kmodel_ray_intersects (struct kmodel_system_state *state, kmodel_instance instance, const ray *r, mat4 world, raycast_hit *out_hit)
 
KAPI b8 kmodel_submesh_count_get (struct kmodel_system_state *state, u16 base_mesh_id, u16 *out_count)
 
KAPI const kgeometrykmodel_submesh_geometry_get_at (struct kmodel_system_state *state, u16 base_mesh_id, u16 index)
 
KAPI const kmaterial_instancekmodel_submesh_material_instance_get_at (struct kmodel_system_state *state, kmodel_instance instance, u16 index)
 
KAPI knamekmodel_query_animations (struct kmodel_system_state *state, u16 base_mesh, u32 *out_count)
 
KAPI void kmodel_instance_animation_set (struct kmodel_system_state *state, kmodel_instance instance, kname animation_name)
 
KAPI u32 kmodel_instance_animation_id_get (struct kmodel_system_state *state, kmodel_instance instance)
 
KAPI void kmodel_instance_time_scale_set (kmodel_system_state *state, kmodel_instance instance, f32 time_scale)
 
KAPI void kmodel_instance_loop_set (struct kmodel_system_state *state, kmodel_instance instance, b8 loop)
 
KAPI void kmodel_instance_play (struct kmodel_system_state *state, kmodel_instance instance)
 
KAPI void kmodel_instance_pause (struct kmodel_system_state *state, kmodel_instance instance)
 
KAPI void kmodel_instance_stop (struct kmodel_system_state *state, kmodel_instance instance)
 
KAPI void kmodel_instance_seek (struct kmodel_system_state *state, kmodel_instance instance, f32 time)
 
KAPI void kmodel_instance_seek_percent (struct kmodel_system_state *state, kmodel_instance instance, f32 percent)
 

Macro Definition Documentation

◆ KANIMATION_MAX_BONES

#define KANIMATION_MAX_BONES   64

◆ KRENDERBUFFER_NAME_ANIMATIONS_GLOBAL

#define KRENDERBUFFER_NAME_ANIMATIONS_GLOBAL   "Kohi.StorageBuffer.AnimationsGlobal"

Typedef Documentation

◆ anim_key_quat

typedef struct anim_key_quat anim_key_quat

◆ anim_key_vec3

typedef struct anim_key_vec3 anim_key_vec3

◆ kmodel_animation

◆ kmodel_animation_shader_data

◆ kmodel_animator

◆ kmodel_animator_state

◆ kmodel_base

typedef struct kmodel_base kmodel_base

◆ kmodel_bone

typedef struct kmodel_bone kmodel_bone

◆ kmodel_channel

◆ kmodel_instance

◆ kmodel_instance_data

◆ kmodel_instance_queue_entry

◆ kmodel_instance_state

◆ kmodel_node

typedef struct kmodel_node kmodel_node

◆ kmodel_state

typedef enum kmodel_state kmodel_state

◆ kmodel_submesh

◆ kmodel_system_config

◆ kmodel_system_state

◆ kmodel_type

typedef enum kmodel_type kmodel_type

◆ PFN_animated_mesh_loaded

typedef void(* PFN_animated_mesh_loaded) (kmodel_instance instance, void *context)

Enumeration Type Documentation

◆ kmodel_animator_state

Enumerator
KMODEL_ANIMATOR_STATE_STOPPED 
KMODEL_ANIMATOR_STATE_PLAYING 
KMODEL_ANIMATOR_STATE_PAUSED 

◆ kmodel_instance_state

Enumerator
KMODEL_INSTANCE_STATE_UNINITIALIZED 
KMODEL_INSTANCE_STATE_ACQUIRED 

◆ kmodel_state

Enumerator
KMODEL_STATE_UNINITIALIZED 
KMODEL_STATE_ACQUIRED 
KMODEL_STATE_LOADING 
KMODEL_STATE_LOADED 

◆ kmodel_type

Enumerator
KMODEL_TYPE_STATIC 
KMODEL_TYPE_ANIMATED 

Function Documentation

◆ kmodel_instance_acquire()

KAPI kmodel_instance kmodel_instance_acquire ( struct kmodel_system_state state,
kname  asset_name,
PFN_animated_mesh_loaded  callback,
void *  context 
)

◆ kmodel_instance_acquire_from_package()

KAPI kmodel_instance kmodel_instance_acquire_from_package ( struct kmodel_system_state state,
kname  asset_name,
kname  package_name,
PFN_animated_mesh_loaded  callback,
void *  context 
)

◆ kmodel_instance_animation_id_get()

KAPI u32 kmodel_instance_animation_id_get ( struct kmodel_system_state state,
kmodel_instance  instance 
)

◆ kmodel_instance_animation_set()

KAPI void kmodel_instance_animation_set ( struct kmodel_system_state state,
kmodel_instance  instance,
kname  animation_name 
)

◆ kmodel_instance_loop_set()

KAPI void kmodel_instance_loop_set ( struct kmodel_system_state state,
kmodel_instance  instance,
b8  loop 
)

◆ kmodel_instance_pause()

KAPI void kmodel_instance_pause ( struct kmodel_system_state state,
kmodel_instance  instance 
)

◆ kmodel_instance_play()

KAPI void kmodel_instance_play ( struct kmodel_system_state state,
kmodel_instance  instance 
)

◆ kmodel_instance_release()

KAPI void kmodel_instance_release ( struct kmodel_system_state state,
kmodel_instance instance 
)

◆ kmodel_instance_seek()

KAPI void kmodel_instance_seek ( struct kmodel_system_state state,
kmodel_instance  instance,
f32  time 
)

◆ kmodel_instance_seek_percent()

KAPI void kmodel_instance_seek_percent ( struct kmodel_system_state state,
kmodel_instance  instance,
f32  percent 
)

◆ kmodel_instance_stop()

KAPI void kmodel_instance_stop ( struct kmodel_system_state state,
kmodel_instance  instance 
)

◆ kmodel_instance_time_scale_set()

KAPI void kmodel_instance_time_scale_set ( kmodel_system_state state,
kmodel_instance  instance,
f32  time_scale 
)

◆ kmodel_query_animations()

KAPI kname* kmodel_query_animations ( struct kmodel_system_state state,
u16  base_mesh,
u32 out_count 
)

◆ kmodel_ray_intersects()

KAPI b8 kmodel_ray_intersects ( struct kmodel_system_state state,
kmodel_instance  instance,
const ray r,
mat4  world,
raycast_hit out_hit 
)

◆ kmodel_submesh_count_get()

KAPI b8 kmodel_submesh_count_get ( struct kmodel_system_state state,
u16  base_mesh_id,
u16 out_count 
)

◆ kmodel_submesh_geometry_get_at()

KAPI const kgeometry* kmodel_submesh_geometry_get_at ( struct kmodel_system_state state,
u16  base_mesh_id,
u16  index 
)

◆ kmodel_submesh_material_instance_get_at()

KAPI const kmaterial_instance* kmodel_submesh_material_instance_get_at ( struct kmodel_system_state state,
kmodel_instance  instance,
u16  index 
)

◆ kmodel_system_frame_prepare()

void kmodel_system_frame_prepare ( kmodel_system_state state,
frame_data p_frame_data 
)

◆ kmodel_system_initialize()

b8 kmodel_system_initialize ( u64 memory_requirement,
kmodel_system_state memory,
const kmodel_system_config config 
)

◆ kmodel_system_shutdown()

void kmodel_system_shutdown ( kmodel_system_state state)

◆ kmodel_system_time_scale()

KAPI void kmodel_system_time_scale ( kmodel_system_state state,
f32  time_scale 
)

◆ kmodel_system_update()

void kmodel_system_update ( kmodel_system_state state,
f32  delta_time,
frame_data p_frame_data 
)