|
Kohi Game Engine
|
#include <core/frame_data.h>#include <core_resource_types.h>#include <defines.h>#include <math/math_types.h>#include <strings/kstring_id.h>#include "renderer/kforward_renderer.h"#include "systems/kcamera_system.h"#include "systems/kmodel_system.h"#include "systems/light_system.h"#include "utils/kcolour.h"#include "world/world_types.h"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 kentity * | kscene_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_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) |
| 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) |
| 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) |
| 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) |
| KAPI kentity * | kscene_get_spawn_points (struct kscene *scene, u32 flags, u16 *out_spawn_point_count) |
| 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) |
| KAPI const char * | kscene_serialize (const struct kscene *scene) |
| KAPI void | kscene_dump_hierarchy (const struct kscene *scene) |
| KAPI kscene_hierarchy_node * | kscene_get_hierarchy (const struct kscene *scene, u32 *out_count) |
| KAPI void | kscene_cleanup_hierarchy (kscene_hierarchy_node *nodes, u32 count) |
| typedef enum kscene_flag_bits kscene_flag_bits |
| typedef u32 kscene_flags |
| typedef struct kscene_hierarchy_node kscene_hierarchy_node |
| typedef enum kscene_render_data_flag kscene_render_data_flag |
| typedef u32 kscene_render_data_flag_bits |
| typedef enum kscene_state kscene_state |
| typedef void(* PFN_model_loaded) (kentity entity, kmodel_instance inst, void *context) |
| typedef void(* PFN_scene_loaded) (struct kscene *scene, void *context) |
| enum kscene_flag_bits |
| enum kscene_state |
| 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 kentity kscene_add_entity | ( | struct kscene * | scene, |
| kname | name, | ||
| ktransform | transform, | ||
| kentity | parent | ||
| ) |
| 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_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_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_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.
| colour | The light colour. |
| linear | Reduces light intensity linearly. |
| quadratic | Makes the light fall off slower at longer distances. |
| 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_water_plane | ( | struct kscene * | scene, |
| kname | name, | ||
| ktransform | transform, | ||
| kentity | parent, | ||
| f32 | size | ||
| ) |
| KAPI void kscene_cleanup_hierarchy | ( | kscene_hierarchy_node * | nodes, |
| u32 | count | ||
| ) |
| 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_dump_hierarchy | ( | const struct kscene * | scene | ) |
| KAPI b8 kscene_frame_prepare | ( | struct kscene * | scene, |
| struct frame_data * | p_frame_data, | ||
| u32 | render_mode, | ||
| kcamera | current_camera | ||
| ) |
| KAPI extents_3d kscene_get_aabb | ( | struct kscene * | scene, |
| kentity | entity | ||
| ) |
| 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 | ||
| ) |
| 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 | ||
| ) |
| KAPI kdirectional_light_data kscene_get_directional_light_data | ( | struct kscene * | scene | ) |
| KAPI kentity_flags kscene_get_entity_flags | ( | struct kscene * | scene, |
| kentity | entity | ||
| ) |
| KAPI ktransform kscene_get_entity_transform | ( | struct kscene * | scene, |
| kentity | entity | ||
| ) |
| KAPI kentity_type kscene_get_entity_type | ( | struct kscene * | scene, |
| kentity | entity | ||
| ) |
| KAPI b8 kscene_get_flag | ( | const struct kscene * | scene, |
| kscene_flag_bits | flag | ||
| ) |
| KAPI kscene_flags kscene_get_flags | ( | const struct kscene * | scene | ) |
| KAPI kscene_hierarchy_node* kscene_get_hierarchy | ( | const struct kscene * | scene, |
| u32 * | out_count | ||
| ) |
| 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 | ||
| ) |
| KAPI const char* kscene_get_name | ( | const struct kscene * | scene | ) |
| 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 kskybox_render_data kscene_get_skybox_render_data | ( | struct kscene * | scene | ) |
| KAPI kentity* kscene_get_spawn_points | ( | struct kscene * | scene, |
| u32 | flags, | ||
| u16 * | out_spawn_point_count | ||
| ) |
| 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 | ||
| ) |
| 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 | ||
| ) |
| KAPI kmodel_instance kscene_model_entity_get_instance | ( | struct kscene * | scene, |
| kentity | entity | ||
| ) |
| KAPI b8 kscene_raycast | ( | struct kscene * | scene, |
| const struct ray * | r, | ||
| struct raycast_result * | out_result | ||
| ) |
| KAPI const char* kscene_serialize | ( | const struct kscene * | scene | ) |
| KAPI void kscene_set_entity_flag | ( | struct kscene * | scene, |
| kentity | entity, | ||
| kentity_flag_bits | flag, | ||
| b8 | enabled | ||
| ) |
| KAPI void kscene_set_entity_flags | ( | struct kscene * | scene, |
| kentity | entity, | ||
| kentity_flags | flags | ||
| ) |
| KAPI void kscene_set_flag | ( | struct kscene * | scene, |
| kscene_flags | flag, | ||
| b8 | enabled | ||
| ) |
| KAPI void kscene_set_flags | ( | struct kscene * | scene, |
| kscene_flags | flags | ||
| ) |
| KAPI void kscene_set_name | ( | struct kscene * | scene, |
| const char * | name | ||
| ) |
| KAPI kscene_state kscene_state_get | ( | const struct kscene * | scene | ) |
| KAPI b8 kscene_update | ( | struct kscene * | scene, |
| struct frame_data * | p_frame_data | ||
| ) |