Kohi Game Engine
kscene.h File Reference

Go to the source code of this file.

Data Structures

struct  kscene_hierarchy_node
 

Typedefs

typedef enum kscene_state kscene_state
 
typedef enum kscene_render_data_flag kscene_render_data_flag
 
typedef u32 kscene_render_data_flag_bits
 
typedef enum kscene_flag_bits kscene_flag_bits
 
typedef u32 kscene_flags
 
typedef void(* PFN_scene_loaded) (struct kscene *scene, void *context)
 
typedef void(* PFN_model_loaded) (kentity entity, kmodel_instance inst, void *context)
 
typedef struct kscene_hierarchy_node kscene_hierarchy_node
 

Enumerations

enum  kscene_state {
  KSCENE_STATE_UNINITIALIZED , KSCENE_STATE_PARSING_CONFIG , KSCENE_STATE_LOADING , KSCENE_STATE_PRE_LOADED ,
  KSCENE_STATE_LOADED
}
 
enum  kscene_render_data_flag { KSCENE_RENDER_DATA_FLAG_NONE = 0 , KSCENE_RENDER_DATA_FLAG_TRANSPARENT_BIT = 1 << 0 , KSCENE_RENDER_INCLUDE_BVH_DEBUG_BIT = 1 << 1 }
 
enum  kscene_flag_bits { KSCENE_FLAG_NONE = 0 }
 

Functions

KAPI struct kscene * kscene_create (const char *config, PFN_scene_loaded loaded_callback, void *load_context)
 
KAPI void kscene_destroy (struct kscene *scene)
 
KAPI void kscene_on_window_resize (struct kscene *scene, const struct kwindow *window)
 
KAPI b8 kscene_update (struct kscene *scene, struct frame_data *p_frame_data)
 
KAPI b8 kscene_frame_prepare (struct kscene *scene, struct frame_data *p_frame_data, u32 render_mode, kcamera current_camera)
 
KAPI kscene_state kscene_state_get (const struct kscene *scene)
 
KAPI kscene_flags kscene_get_flags (const struct kscene *scene)
 
KAPI b8 kscene_get_flag (const struct kscene *scene, kscene_flag_bits flag)
 
KAPI void kscene_set_flags (struct kscene *scene, kscene_flags flags)
 
KAPI void kscene_set_flag (struct kscene *scene, kscene_flags flag, b8 enabled)
 
KAPI const char * kscene_get_name (const struct kscene *scene)
 
KAPI void kscene_set_name (struct kscene *scene, const char *name)
 
KAPI vec3 kscene_get_fog_colour (const struct kscene *scene)
 
KAPI void kscene_set_fog_colour (struct kscene *scene, colour3 colour)
 
KAPI f32 kscene_get_fog_near (const struct kscene *scene)
 
KAPI void kscene_set_fog_near (struct kscene *scene, f32 near)
 
KAPI f32 kscene_get_fog_far (const struct kscene *scene)
 
KAPI void kscene_set_fog_far (struct kscene *scene, f32 far)
 
KAPI void kscene_set_active_camera (struct kscene *scene, kcamera camera)
 
KAPI void kscene_get_shadow_properties (struct kscene *scene, f32 *out_shadow_dist, f32 *out_shadow_fade_distance, f32 *out_shadow_split_mult, f32 *out_shadow_bias)
 
KAPI b8 kscene_raycast (struct kscene *scene, const struct ray *r, struct raycast_result *out_result)
 
KAPI kentity kscene_get_entity_by_name (struct kscene *scene, kname name)
 
KAPI kentity_flags kscene_get_entity_flags (struct kscene *scene, kentity entity)
 
KAPI void kscene_set_entity_flags (struct kscene *scene, kentity entity, kentity_flags flags)
 
KAPI void kscene_set_entity_flag (struct kscene *scene, kentity entity, kentity_flag_bits flag, b8 enabled)
 
KAPI kname kscene_get_entity_name (struct kscene *scene, kentity entity)
 
KAPI void kscene_set_entity_name (struct kscene *scene, kentity entity, kname name)
 
KAPI kentity_type kscene_get_entity_type (struct kscene *scene, kentity entity)
 
KAPI kentitykscene_get_entity_children (struct kscene *scene, kentity entity, u16 *out_count)
 
KAPI kentity kscene_get_entity_parent (struct kscene *scene, kentity entity)
 
KAPI ktransform kscene_get_entity_transform (struct kscene *scene, kentity entity)
 
KAPI extents_3d kscene_get_aabb (struct kscene *scene, kentity entity)
 
KAPI vec3 kscene_get_entity_position (struct kscene *scene, kentity entity)
 
KAPI void kscene_set_entity_position (struct kscene *scene, kentity entity, vec3 position)
 
KAPI quat kscene_get_entity_rotation (struct kscene *scene, kentity entity)
 
KAPI void kscene_set_entity_rotation (struct kscene *scene, kentity entity, quat rotation)
 
KAPI vec3 kscene_get_entity_scale (struct kscene *scene, kentity entity)
 
KAPI void kscene_set_entity_scale (struct kscene *scene, kentity entity, vec3 scale)
 
KAPI void kscene_remove_entity (struct kscene *scene, kentity *entity)
 
KAPI kentity kscene_add_entity (struct kscene *scene, kname name, ktransform transform, kentity parent)
 
KAPI kentity kscene_add_model_pos_rot_scale (struct kscene *scene, kname name, kentity parent, kname asset_name, kname package_name, vec3 pos, quat rot, vec3 scale)
 
KAPI kentity kscene_add_model (struct kscene *scene, kname name, ktransform transform, kentity parent, kname asset_name, kname package_name, PFN_model_loaded on_loaded_callback, void *load_context)
 
KAPI kentity kscene_add_point_light (struct kscene *scene, kname name, ktransform transform, kentity parent, vec3 colour, f32 linear, f32 quadratic)
 Creates and adds a new point light entity to the scene. More...
 
KAPI kentity kscene_add_spawn_point (struct kscene *scene, kname name, ktransform transform, kentity parent, f32 radius)
 
KAPI kentity kscene_add_volume (struct kscene *scene, kname name, ktransform transform, kentity parent, kscene_volume_type type, kcollision_shape shape, u8 hit_shape_tag_count, kstring_id *hit_shape_tags, const char *on_enter_command, const char *on_leave_command, const char *on_tick_command)
 
KAPI kentity kscene_add_hit_shape (struct kscene *scene, kname name, ktransform transform, kentity parent, kcollision_shape shape, u8 tag_count, kstring_id *tags)
 
KAPI kentity kscene_add_water_plane (struct kscene *scene, kname name, ktransform transform, kentity parent, f32 size)
 
KAPI kentity kscene_add_audio_emitter (struct kscene *scene, kname name, ktransform transform, kentity parent, f32 inner_radius, f32 outer_radius, f32 volume, f32 falloff, b8 is_looping, b8 is_streaming, kname asset_name, kname package_name)
 
KAPI kmodel_instance kscene_model_entity_get_instance (struct kscene *scene, kentity entity)
 
KAPI kdirectional_light_data kscene_get_directional_light_data (struct kscene *scene)
 
KAPI kskybox_render_data kscene_get_skybox_render_data (struct kscene *scene)
 
KAPI kmaterial_render_datakscene_get_static_model_render_data (struct kscene *scene, struct frame_data *p_frame_data, kfrustum *frustum, kscene_render_data_flag_bits flags, u16 *out_material_count)
 
KAPI kmaterial_render_datakscene_get_animated_model_render_data (struct kscene *scene, struct frame_data *p_frame_data, kfrustum *frustum, kscene_render_data_flag_bits flags, u16 *out_material_count)
 
KAPI hm_terrain_render_datakscene_get_hm_terrain_render_data (struct kscene *scene, struct frame_data *p_frame_data, kfrustum *frustum, u32 flags, u16 *out_terrain_count)
 
KAPI kwater_plane_render_datakscene_get_water_plane_render_data (struct kscene *scene, struct frame_data *p_frame_data, kfrustum *frustum, u32 flags, u16 *out_water_plane_count)
 
KAPI kentitykscene_get_spawn_points (struct kscene *scene, u32 flags, u16 *out_spawn_point_count)
 
KAPI klight_render_datakscene_get_all_point_lights (struct kscene *scene, struct frame_data *p_frame_data, u32 flags, u16 *out_point_light_count)
 
KAPI const char * kscene_serialize (const struct kscene *scene)
 
KAPI void kscene_dump_hierarchy (const struct kscene *scene)
 
KAPI kscene_hierarchy_nodekscene_get_hierarchy (const struct kscene *scene, u32 *out_count)
 
KAPI void kscene_cleanup_hierarchy (kscene_hierarchy_node *nodes, u32 count)
 

Typedef Documentation

◆ kscene_flag_bits

◆ kscene_flags

typedef u32 kscene_flags

◆ kscene_hierarchy_node

◆ kscene_render_data_flag

◆ kscene_render_data_flag_bits

◆ kscene_state

typedef enum kscene_state kscene_state

◆ PFN_model_loaded

typedef void(* PFN_model_loaded) (kentity entity, kmodel_instance inst, void *context)

◆ PFN_scene_loaded

typedef void(* PFN_scene_loaded) (struct kscene *scene, void *context)

Enumeration Type Documentation

◆ kscene_flag_bits

Enumerator
KSCENE_FLAG_NONE 

◆ kscene_render_data_flag

Enumerator
KSCENE_RENDER_DATA_FLAG_NONE 
KSCENE_RENDER_DATA_FLAG_TRANSPARENT_BIT 
KSCENE_RENDER_INCLUDE_BVH_DEBUG_BIT 

◆ kscene_state

Enumerator
KSCENE_STATE_UNINITIALIZED 
KSCENE_STATE_PARSING_CONFIG 
KSCENE_STATE_LOADING 
KSCENE_STATE_PRE_LOADED 
KSCENE_STATE_LOADED 

Function Documentation

◆ kscene_add_audio_emitter()

KAPI kentity kscene_add_audio_emitter ( struct kscene *  scene,
kname  name,
ktransform  transform,
kentity  parent,
f32  inner_radius,
f32  outer_radius,
f32  volume,
f32  falloff,
b8  is_looping,
b8  is_streaming,
kname  asset_name,
kname  package_name 
)

◆ kscene_add_entity()

KAPI kentity kscene_add_entity ( struct kscene *  scene,
kname  name,
ktransform  transform,
kentity  parent 
)

◆ kscene_add_hit_shape()

KAPI kentity kscene_add_hit_shape ( struct kscene *  scene,
kname  name,
ktransform  transform,
kentity  parent,
kcollision_shape  shape,
u8  tag_count,
kstring_id tags 
)

◆ kscene_add_model()

KAPI kentity kscene_add_model ( struct kscene *  scene,
kname  name,
ktransform  transform,
kentity  parent,
kname  asset_name,
kname  package_name,
PFN_model_loaded  on_loaded_callback,
void *  load_context 
)

◆ kscene_add_model_pos_rot_scale()

KAPI kentity kscene_add_model_pos_rot_scale ( struct kscene *  scene,
kname  name,
kentity  parent,
kname  asset_name,
kname  package_name,
vec3  pos,
quat  rot,
vec3  scale 
)

◆ kscene_add_point_light()

KAPI kentity kscene_add_point_light ( struct kscene *  scene,
kname  name,
ktransform  transform,
kentity  parent,
vec3  colour,
f32  linear,
f32  quadratic 
)

Creates and adds a new point light entity to the scene.

Parameters
colourThe light colour.
linearReduces light intensity linearly.
quadraticMakes the light fall off slower at longer distances.

◆ kscene_add_spawn_point()

KAPI kentity kscene_add_spawn_point ( struct kscene *  scene,
kname  name,
ktransform  transform,
kentity  parent,
f32  radius 
)

◆ kscene_add_volume()

KAPI kentity kscene_add_volume ( struct kscene *  scene,
kname  name,
ktransform  transform,
kentity  parent,
kscene_volume_type  type,
kcollision_shape  shape,
u8  hit_shape_tag_count,
kstring_id hit_shape_tags,
const char *  on_enter_command,
const char *  on_leave_command,
const char *  on_tick_command 
)

◆ kscene_add_water_plane()

KAPI kentity kscene_add_water_plane ( struct kscene *  scene,
kname  name,
ktransform  transform,
kentity  parent,
f32  size 
)

◆ kscene_cleanup_hierarchy()

KAPI void kscene_cleanup_hierarchy ( kscene_hierarchy_node nodes,
u32  count 
)

◆ kscene_create()

KAPI struct kscene* kscene_create ( const char *  config,
PFN_scene_loaded  loaded_callback,
void *  load_context 
)

◆ kscene_destroy()

KAPI void kscene_destroy ( struct kscene *  scene)

◆ kscene_dump_hierarchy()

KAPI void kscene_dump_hierarchy ( const struct kscene *  scene)

◆ kscene_frame_prepare()

KAPI b8 kscene_frame_prepare ( struct kscene *  scene,
struct frame_data p_frame_data,
u32  render_mode,
kcamera  current_camera 
)

◆ kscene_get_aabb()

KAPI extents_3d kscene_get_aabb ( struct kscene *  scene,
kentity  entity 
)

◆ kscene_get_all_point_lights()

KAPI klight_render_data* kscene_get_all_point_lights ( struct kscene *  scene,
struct frame_data p_frame_data,
u32  flags,
u16 out_point_light_count 
)

◆ kscene_get_animated_model_render_data()

KAPI kmaterial_render_data* kscene_get_animated_model_render_data ( struct kscene *  scene,
struct frame_data p_frame_data,
kfrustum frustum,
kscene_render_data_flag_bits  flags,
u16 out_material_count 
)

◆ kscene_get_directional_light_data()

KAPI kdirectional_light_data kscene_get_directional_light_data ( struct kscene *  scene)

◆ kscene_get_entity_by_name()

KAPI kentity kscene_get_entity_by_name ( struct kscene *  scene,
kname  name 
)

◆ kscene_get_entity_children()

KAPI kentity* kscene_get_entity_children ( struct kscene *  scene,
kentity  entity,
u16 out_count 
)

◆ kscene_get_entity_flags()

KAPI kentity_flags kscene_get_entity_flags ( struct kscene *  scene,
kentity  entity 
)

◆ kscene_get_entity_name()

KAPI kname kscene_get_entity_name ( struct kscene *  scene,
kentity  entity 
)

◆ kscene_get_entity_parent()

KAPI kentity kscene_get_entity_parent ( struct kscene *  scene,
kentity  entity 
)

◆ kscene_get_entity_position()

KAPI vec3 kscene_get_entity_position ( struct kscene *  scene,
kentity  entity 
)

◆ kscene_get_entity_rotation()

KAPI quat kscene_get_entity_rotation ( struct kscene *  scene,
kentity  entity 
)

◆ kscene_get_entity_scale()

KAPI vec3 kscene_get_entity_scale ( struct kscene *  scene,
kentity  entity 
)

◆ kscene_get_entity_transform()

KAPI ktransform kscene_get_entity_transform ( struct kscene *  scene,
kentity  entity 
)

◆ kscene_get_entity_type()

KAPI kentity_type kscene_get_entity_type ( struct kscene *  scene,
kentity  entity 
)

◆ kscene_get_flag()

KAPI b8 kscene_get_flag ( const struct kscene *  scene,
kscene_flag_bits  flag 
)

◆ kscene_get_flags()

KAPI kscene_flags kscene_get_flags ( const struct kscene *  scene)

◆ kscene_get_fog_colour()

KAPI vec3 kscene_get_fog_colour ( const struct kscene *  scene)

◆ kscene_get_fog_far()

KAPI f32 kscene_get_fog_far ( const struct kscene *  scene)

◆ kscene_get_fog_near()

KAPI f32 kscene_get_fog_near ( const struct kscene *  scene)

◆ kscene_get_hierarchy()

KAPI kscene_hierarchy_node* kscene_get_hierarchy ( const struct kscene *  scene,
u32 out_count 
)

◆ kscene_get_hm_terrain_render_data()

KAPI hm_terrain_render_data* kscene_get_hm_terrain_render_data ( struct kscene *  scene,
struct frame_data p_frame_data,
kfrustum frustum,
u32  flags,
u16 out_terrain_count 
)

◆ kscene_get_name()

KAPI const char* kscene_get_name ( const struct kscene *  scene)

◆ kscene_get_shadow_properties()

KAPI void kscene_get_shadow_properties ( struct kscene *  scene,
f32 out_shadow_dist,
f32 out_shadow_fade_distance,
f32 out_shadow_split_mult,
f32 out_shadow_bias 
)

◆ kscene_get_skybox_render_data()

KAPI kskybox_render_data kscene_get_skybox_render_data ( struct kscene *  scene)

◆ kscene_get_spawn_points()

KAPI kentity* kscene_get_spawn_points ( struct kscene *  scene,
u32  flags,
u16 out_spawn_point_count 
)

◆ kscene_get_static_model_render_data()

KAPI kmaterial_render_data* kscene_get_static_model_render_data ( struct kscene *  scene,
struct frame_data p_frame_data,
kfrustum frustum,
kscene_render_data_flag_bits  flags,
u16 out_material_count 
)

◆ kscene_get_water_plane_render_data()

KAPI kwater_plane_render_data* kscene_get_water_plane_render_data ( struct kscene *  scene,
struct frame_data p_frame_data,
kfrustum frustum,
u32  flags,
u16 out_water_plane_count 
)

◆ kscene_model_entity_get_instance()

KAPI kmodel_instance kscene_model_entity_get_instance ( struct kscene *  scene,
kentity  entity 
)

◆ kscene_on_window_resize()

KAPI void kscene_on_window_resize ( struct kscene *  scene,
const struct kwindow window 
)

◆ kscene_raycast()

KAPI b8 kscene_raycast ( struct kscene *  scene,
const struct ray r,
struct raycast_result out_result 
)

◆ kscene_remove_entity()

KAPI void kscene_remove_entity ( struct kscene *  scene,
kentity entity 
)

◆ kscene_serialize()

KAPI const char* kscene_serialize ( const struct kscene *  scene)

◆ kscene_set_active_camera()

KAPI void kscene_set_active_camera ( struct kscene *  scene,
kcamera  camera 
)

◆ kscene_set_entity_flag()

KAPI void kscene_set_entity_flag ( struct kscene *  scene,
kentity  entity,
kentity_flag_bits  flag,
b8  enabled 
)

◆ kscene_set_entity_flags()

KAPI void kscene_set_entity_flags ( struct kscene *  scene,
kentity  entity,
kentity_flags  flags 
)

◆ kscene_set_entity_name()

KAPI void kscene_set_entity_name ( struct kscene *  scene,
kentity  entity,
kname  name 
)

◆ kscene_set_entity_position()

KAPI void kscene_set_entity_position ( struct kscene *  scene,
kentity  entity,
vec3  position 
)

◆ kscene_set_entity_rotation()

KAPI void kscene_set_entity_rotation ( struct kscene *  scene,
kentity  entity,
quat  rotation 
)

◆ kscene_set_entity_scale()

KAPI void kscene_set_entity_scale ( struct kscene *  scene,
kentity  entity,
vec3  scale 
)

◆ kscene_set_flag()

KAPI void kscene_set_flag ( struct kscene *  scene,
kscene_flags  flag,
b8  enabled 
)

◆ kscene_set_flags()

KAPI void kscene_set_flags ( struct kscene *  scene,
kscene_flags  flags 
)

◆ kscene_set_fog_colour()

KAPI void kscene_set_fog_colour ( struct kscene *  scene,
colour3  colour 
)

◆ kscene_set_fog_far()

KAPI void kscene_set_fog_far ( struct kscene *  scene,
f32  far 
)

◆ kscene_set_fog_near()

KAPI void kscene_set_fog_near ( struct kscene *  scene,
f32  near 
)

◆ kscene_set_name()

KAPI void kscene_set_name ( struct kscene *  scene,
const char *  name 
)

◆ kscene_state_get()

KAPI kscene_state kscene_state_get ( const struct kscene *  scene)

◆ kscene_update()

KAPI b8 kscene_update ( struct kscene *  scene,
struct frame_data p_frame_data 
)